我剛開始使用VBOs,並且除了頂點索引緩衝區之外,一切似乎都很好。如果我啓用索引緩衝區後調用glDrawElements,我會得到一個訪問衝突錯誤(找不到索引),如果我簡單地用指向內存中索引數組開頭的指針調用它,它就會工作..OpenGL:頂點索引緩衝區問題
//DOESN'T WORK
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indices);
glDrawElements(GL_TRIANGLES, stripIndices.size(), GL_UNSIGNED_INT, 0);
//WORKS
glDrawElements(GL_TRIANGLES, stripIndices.size(), GL_UNSIGNED_INT, &stripIndices[0]);
我覺得設置起來的時候,我做的一切權利,但我仍然會後一些代碼:
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]在端指針我想使用頂點緩衝器下標,但我不能)。
這是問題出現的地方。我不明白。我生成的緩衝區對象,填充索引數據,但是當涉及到繪製它似乎並沒有找到它。任何人有任何想法如何解決這個問題?
由於
編輯:我認爲編譯器解釋的偏移「0」到緩衝器對象在內存中的指針位置「0」,這將引發訪問衝突錯誤。
你能用你實際使用的代碼更新你的問題嗎?例如,用tibur的回答中的建議來修正對glVertexPoint的調用。而且,你的代碼初始化一個正常的緩衝區;然後使用顏色緩衝區。很難說你的代碼看起來不完整。 – rotoglup 2011-02-06 22:25:38
好點,我沒有注意到 – Zepee 2011-02-06 22:55:10