頂点データを VBO に変換しようとすると、常に黒い画面が表示されます...実装の何が問題なのかわかりません。私のレンダリングでは、bindBuffer 呼び出しを削除し、頂点ポインターを 0 ではなく glVertexPointer に渡すと、nbVertices と頂点が適切に設定されます。
Vec3 定義:
struct vec3
{
float x;
float y;
float z;
}
作成 :
glGenBuffers(1, &vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vec3) * this->nbVertices, vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,0);
レンダリング:
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// draw cube
glScalef(scaleX, scaleY, scaleZ);
glRotatef(rotX, 1, 0, 0);
glRotatef(rotY, 0, 1, 0);
glRotatef(rotZ, 0, 0, 1);
for (int i=0; i<nbTextures; i++)
{
glBindTexture(GL_TEXTURE_2D, textureIds[i]);
glBindBuffer(GL_ARRAY_BUFFER,vertexBuffer);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, 0/*this->vertices*/);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, this->normals);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, this->texCoords);
glDrawArrays(GL_TRIANGLE_STRIP, 0, this->nbVertices);
}
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER,0);