【发布时间】:2015-02-06 20:17:27
【问题描述】:
人们通常如何在 OpenGL 3.3+ 中绘制多个对象? 我有 2 个对象:一个地形和一个球体。对于每个对象,我有 2 个数组(顶点和索引)。我尝试设置不同的 VBO 和 IBO(像这样):
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const GLvoid*)12);
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const GLvoid*)20);
glBindBuffer(GL_ARRAY_BUFFER, m_VBO);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_IBO);
glDrawElements(GL_TRIANGLES, (size-1)*(size-1)*6, GL_UNSIGNED_INT, 0);
glBindBuffer(GL_ARRAY_BUFFER, m_VBOsphere);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_IBOsphere);
glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, 0);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);
但看起来 GPU 仅在关闭此功能后才计算/绘制所有内容,而我只看到一个球体。那么,我该怎么办?
【问题讨论】:
-
我没有看到任何问题。只是为了确保,如果你注释掉 3 行球体渲染,地形渲染得很好?