我正在使用 OpenGL 创建一个应用程序,它在三维空间中绘制一些四边形平面。一切正常,直到我开始为每个平面设置不同的顶点坐标。现在,当我创建一个具有新坐标的平面时,它的绘制就像以前创建的平面一样。换句话说,它的新坐标正在被使用。
我正在使用带有 Qt 库的 OpenGL。
void Plane::initBuffers()
{
mVertexVBO.create(); //QGLBuffer
mIndexVBO.create(); //QGLBuffer
mVertexVBO.bind();
mIndexVBO.bind();
mVertexVBO.setUsagePattern(QGLBuffer::StaticDraw);
mIndexVBO.setUsagePattern(QGLBuffer::StaticDraw);
/* mVertices and mIndices are a QVarLengthArray object */
Vertex* aVerts = mVertices.data();
for(int i=0; i<4; ++i)
{
qDebug() << aVerts[i].x << " " << aVerts[i].y << " " << aVerts[i].z;
}
qDebug() << " --- ";
mVertexVBO.allocate(mVertices.data(), sizeof(Vertex)*4);
mIndexVBO.allocate(mIndices.data(), sizeof(GLuint)*6);
}
我创建了 2 架飞机。默认情况下,它们中的每一个都是使用以下坐标创建的:
-1 -1 0
-1 1 0
1 1 0
1 -1 0
我将第一架飞机的坐标更改为
1 0 0
0 0 0
0 0 1
1 0 1
但是,这些平面的绘制完全相同。它们只是在不同的地方,因为我改变了他们的模型矩阵。QVarLengthArray 已正确更新(上面的代码执行向我展示了这一点)。
有人知道我错过了什么吗?