【发布时间】:2014-04-30 08:05:47
【问题描述】:
我有这个代码用于我正在做的一个 OpenGL 项目,但它什么也没画:
glBindBuffer(GL_ARRAY_BUFFER, g_terrainVBO);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
// Bind the buffers
glBindBuffer(GL_ARRAY_BUFFER, g_cubeVBO);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_cubeIBO);
// Draw the elements on the GPU
glDrawElements(
GL_TRIANGLES,
3*12,
GL_UNSIGNED_INT,
0); // SIZE IN BYTES, REMEMBER!
// Disable the vertex attributes (not necessary but recommended)
glDisableVertexAttribArray(0);
但是当我删除线时
glBindBuffer(GL_ARRAY_BUFFER, g_terrainVBO);
立方体模型完美呈现。现在g_terrainVBO 确实存在,因为我使用
// verify buffer size
int nBufferSize = 0;
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &nBufferSize);
int originalVertexArraySize = ( nBufferSize / sizeof(TerrainModel::Vertex) );
cout << "Buffer size: " << originalVertexArraySize << endl;
尺寸显示正确。
有人知道这里有什么问题吗?是什么导致我的地形模型 VBO 出现错误渲染并且没有显示(甚至没有显示立方体)?
【问题讨论】: