我正在使用OpenGL,glew和GLFW为一个项目编写简单的游戏。我已经有一个使用Assimp的3D模型导入器,它也处理纹理。OpenGL批处理渲染网格
这是正路我画一个网格:
glBindBuffer(GL_ARRAY_BUFFER, m_Buffers[NORMAL_VB]);
glNormalPointer(GL_FLOAT, 0, NULL);
glBindBuffer(GL_ARRAY_BUFFER, m_Buffers[TEXCOORD_VB]);
glTexCoordPointer(2, GL_FLOAT, 0, NULL);
glBindBuffer(GL_ARRAY_BUFFER, m_Buffers[POS_VB]);
glVertexPointer(3, GL_FLOAT, 0, NULL);
//Render the triangles
glDrawArrays(GL_TRIANGLES, 0, m_Entries[i].NumIndices);
我的问题是如何来报效百使用相同的网格移动实体,但每个人都有一个不同的世界位置和旋转?
如果我有数百个移动实体,每个帧我都会渲染相同的网格数百次,现在我可以注意到FPS的下降。
顺便说一句,我没有使用着色器,只是简单的画
这是顶点着色器和实例化的目的。问题在于你正在使用'glVertexPointer(...)'等。我真的不知道你使用的是什么版本的GL;实例化在GL 3.1中被提升为核心,但是这个代码可能与GL 1.5一样久远。你能提一下你用什么版本的GL来简化答案吗? –
@ AndonM.Coleman,其实我真的不知道我使用的是什么版本,但它可能是最后一个,我不知道 – andrepcg
@ AndonM.Coleman,我仍然使用很多旧的和不赞成使用的函数 – andrepcg