0

私は現在、VBO について頭を悩ませようとしていますが、いくつかの問題に直面しています。

位置、色、法線を含むインターリーブ配列を使用しています。しかし、描画に行くと、ディスプレイは真っ白です。

これは私の配列の構造です:

GLfloat position[3];
GLfloat normal[3];
GLfloat color[4];

コードは次のとおりです。

初期化:

glGenBuffers(1, &arrays[0]);
glBindBuffer(GL_ARRAY_BUFFER, arrays[0]);

glBufferData(GL_ARRAY_BUFFER, 125*10*36*sizeof(GLfloat), vertices, GL_STATIC_DRAW);

glBindBuffer(GL_ARRAY_BUFFER, 0);

glGenVertexArrays(1, &vaoID[1]);
glBindVertexArray(vaoID[1]);

glBindBuffer(GL_ARRAY_BUFFER, vaoID[1]);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 40, ((void*)0));
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 40, ((void*)12));
glVertexAttribPointer(2, 4, GL_UNSIGNED_BYTE, GL_TRUE, 40, ((void*)24));
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);

glBindVertexArray(0);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

描く:

glPushMatrix();
glBindVertexArray(vaoID[1]);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 125*36);
glPopMatrix();

黒から白までの色のスペクトルを持つ立方体の 5x5 立方体を作成しています。ただし、ドローでは、これが私が得ているすべてです:

ホワイトキューブ。

4

1 に答える 1

2

上記の投稿に問題があります。glVertexAttribPointer()色を構造体で浮動小数点数として定義しましたが、色は符号なしバイトであると言っています。おそらく次のようになります。

glVertexAttribPointer(2, 4, GL_FLOAT, GL_TRUE, 40, ((void*)24));

そして、それはあなたが実際にそれらのメモリ位置にフロートを置いていることを前提としています。どのように設定していますか?

于 2013-01-18T06:45:26.997 に答える