2
我在Android上使用OpenGL ES來繪製一些形狀,因此我有一些Model類可以從.obj文件加載頂點等。重複調用glVertexPointer和glDraw
然後,每個模型都有一個onDrawFrame()方法,由Renderer調用它將其放置在場景中。
public void onDrawFrame(GL10 gl) {
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glFrontFace(GL10.GL_CCW);
gl.glCullFace(GL10.GL_BACK);
gl.glVertexPointer(0, GL10.GL_FLOAT, 0, mVerts);
gl.glDrawElements(GL10.GL_TRIANGLES, mFaces.capacity(), GL10.GL_UNSIGNED_BYTE, mFaces);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
我的困惑,現在就是「重置」頂點指針(我認爲),因爲如果我嘗試創建使用2名新的綠黨新glVertexPointer的獨斷專行,並glDrawElements調用(GL_LINES)使用這些id,該行似乎總是使用原始數據中的vert 0和1。
我是否需要預先定義一個主場景中的所有場景的vert vertVertexPointer,並且讓每個模型都以合適的偏移量調用glDrawElements?或者我以某種方式清除指針?
嗯,好的謝謝。它必須是我的模型類層次結構的其餘部分中的東西。 (glVertexPointer行被埋在我的類層次結構中更深一點,所以在運行的代碼中是正確的) 我將運行一些測試並嘗試縮小範圍。 – Cylindric 2010-08-31 20:38:32
是的,你是否在做任何紋理或顏色分配?你應該把所有這些代碼放在onDrawFrame中,以便更容易保持一致的狀態,我肯定遇到了忘記禁用/啓用指針的問題。 – Frank 2010-08-31 20:45:30