OpenGL を使用して、3 次元空間にクワッド プレーンを描画するアプリケーションを作成しています。各平面に異なる頂点座標を設定し始めるまで、すべてが正常に機能していました。これで、新しい座標で平面を作成すると、以前に作成した平面のように描画されます。つまり、その新しい座標が使用されていることに注意してください。
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 は正しく更新されています (上記のコードの実行でそれがわかりました)。
誰かが私が欠けているものを知っていますか?