【问题标题】:Loading meshes in assimp to a vbo in opengl将assimp中的网格加载到opengl中的vbo
【发布时间】:2013-12-10 02:10:46
【问题描述】:

我正在使用本教程底部的代码使用 assimp 加载网格。 Mesh Loading

所以我加载网格,然后将第一个加载到 vbo 中,然后将它们链接到 vao。

glGenVertexArrays(1, &_vertexArray1); //Bind to first VAO
glBindVertexArray(_vertexArray1);
glGenBuffers(1, &_vertexBufferCube1);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBufferCube1);
glBufferData(GL_ARRAY_BUFFER, g_point_count * 3 * sizeof (float), &g_vp[0], GL_STATIC_DRAW);

glEnableVertexAttribArray(loc1);
glVertexAttribPointer(loc1, 3, GL_FLOAT, GL_FALSE, 0, NULL);
glEnableVertexAttribArray(loc2);
glVertexAttribPointer(loc2, 3, GL_FLOAT, GL_FALSE, 0, NULL);

但是如何将第二个网格加载到 vbo 中? 第二个网格应该包含在g_vp[g_point_count * 3 * sizeof (float)] 中吗? 因为我已经尝试过了,但它不起作用,但可能还有其他问题。

【问题讨论】:

  • 通常,您会为下一个网格生成另一个 VBO。如果你真的想把它放到第一个 VBO 中,你需要让那个 VBO 足够大。

标签: opengl vbo assimp


【解决方案1】:

如果您使用基于 vao 的绘图,您可以将不同的 vbo 存储在不同的 vao 中。在绘制场景时,使用 glBindVertexArray(vao) 和 glBindVertexArray(0) 在不同的 vaos 之间切换。还有更好的解决方案。你可以在一个 vao 中存储多个对象,但记录每个对象的索引数据。然后你可以通过指定索引使用glDrawElementsBaseVertex绘制每个对象。

本教程展示了一个使用 glDrawElementsBaseVertex + assimp 进行渲染的示例 http://ogldev.atspace.co.uk/www/tutorial38/tutorial38.html

【讨论】:

  • 是的,我的问题是我像这样加载我的网格...... for (unsigned int m_i = 0; m_i < scene->mNumMeshes; m_i++) { const aiMesh* mesh = scene->mMeshes[m_i]; g_point_count = mesh->mNumVertices; for (unsigned int v_i = 0; v_i < mesh->mNumVertices; v_i++) { if (mesh->HasPositions ()) { const aiVector3D* vp = &(mesh->mVertices[v_i]); printf (" vp %i (%f,%f,%f)\n", v_i, vp->x, vp->y, vp->z); g_vp.push_back (vp->x); 这是我从教程中复制的代码,我想知道如何准确地访问加载到 g_vp 中的第二个网格?
  • scene->mNumMeshes 告诉您文件中有多少个网格。对于每个网格,您可以记录索引。 for (unsigned int i = 0 ; i mMeshes[i]->mMaterialIndex;网格[i].NumIndices = pScene->mMeshes[i]->mNumFaces * 3;网格[i].BaseVertex = numVertices;网格[i].BaseIndex = numIndices; numVertices += pScene->mMeshes[i]->mNumVertices; numIndices += 网格[i].NumIndices; }
猜你喜欢
  • 2021-12-27
  • 2012-01-13
  • 2018-07-23
  • 1970-01-01
  • 2022-11-28
  • 2018-09-12
  • 2019-02-27
  • 2015-06-29
  • 2023-03-27
相关资源
最近更新 更多