私はVBOを使い始めましたが、頂点インデックスバッファを除いてすべてがうまくいくようです。インデックスバッファを有効にした後にglDrawElementsを呼び出すと、アクセス違反エラー(インデックスを見つけることができません)が発生し、単にメモリ内のインデックス配列の先頭にポインタを置くと、それが動作します。OpenGL:頂点インデックスバッファの問題
私はそれを設定するとき、私は右のすべてをやっていると思いますが、それでも私はいくつかのコード投稿します:
glGenBuffers(1,&vtxBuffer);
glGenBuffers(1,&nrmBuffer);
glGenBuffers(1,&clrBuffer);
glGenBuffers(1,&indices);
glBindBuffer(GL_ARRAY_BUFFER, vtxBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*vertices.size(),
&vertices[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, nrmBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*normals.size(),
&normals[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, clrBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*colors.size(),
&colors[0], GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indices);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint)*stripIndices.size(),
&stripIndices[0], GL_STATIC_DRAW);
をそして私が行う描画する:
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glPushMatrix();
glRotatef(25.f,0.f,1.f,0.f);
s->draw();
glPopMatrix();
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
、S->ドロー()ラインコール:
glBindBuffer(GL_ARRAY_BUFFER, vtxBuffer);
glVertexPointer(3,GL_FLOAT,0,&vertices[0]);
glBindBuffer(GL_ARRAY_BUFFER, clrBuffer);
glNormalPointer(GL_FLOAT,0,&colors[0]);
glBindBuffer(GL_ARRAY_BUFFER, clrBuffer);
glColorPointer(3,GL_FLOAT,0,&clrVtx[0]);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indices);
glDrawElements(GL_TRIANGLES, stripIndices.size(), GL_UNSIGNED_INT, &stripIndices[0]);
(注:すべてのポインタ/ drawElements呼び出しで、代わり&の.. [0]の終わりにポインタを私が頂点バッファの添字を使用したいが、私はできません)。
問題が発生する場所はどこですか。理解できません。私はバッファオブジェクトを生成し、インデックスデータで埋めますが、それは描画には、それを見つけるように見えないようになります。誰もがこの問題を解決する方法について考えている?
おかげ
EDIT:コンパイラはオフセット「0」アクセス違反エラーがスローされますメモリ内の位置に「0」ポインタとしてバッファオブジェクトに解釈しているように私には思えます。
実際に使用しているコードで質問を更新できますか?たとえば、glVertexPointへの呼び出しをtiburの回答の候補に修正します。さらに、あなたのコードは通常のバッファを初期化します。カラーバッファを使用します。あなたのコードが不完全であると思われる間に何かを言うのは難しいです。 – rotoglup
良い点、私はそれに気付かなかった – Zepee