JOGL VBO,替代glDrawElements

问题描述:

我在运行下面的代码渲染JOGL VBO,替代glDrawElements

if (fUseVBO) { 
      gl.glBindBuffer(GL.GL_ARRAY_BUFFER, VBOTexCoords[0]); 
      // Set The TexCoord Pointer To The TexCoord Buffer 
      gl.glTexCoordPointer(2, GL.GL_FLOAT, 0, 0); 
      gl.glBindBuffer(GL.GL_ARRAY_BUFFER, VBOVertices[0]); 
      // Set The Vertex Pointer To The Vertex Buffer 
      gl.glVertexPointer(3, GL.GL_FLOAT, 0, 0); 
     } else { 
      // Specifies the location and data format of an array of vertex 
      // coordinates to use when rendering. 
      gl.glVertexPointer(3, GL.GL_FLOAT, 0, mVerticesBuffer); 
      // Set The Vertex Pointer To Our TexCoord Data 
      gl.glTexCoordPointer(2, GL.GL_FLOAT, 0, mTextureBuffer); 
     } 

     gl.glDrawElements(GL.GL_TRIANGLES, mNumOfIndices, 
         GL.GL_UNSIGNED_SHORT, mIndicesBuffer); 

在这种方法甚至强硬。我有VBO的纹理坐标和顶点,我传递的索引缓存每次我渲染。 (我有个顶点,纹理坐标和指数的对象)

我试着用下面的代码

gl.glDrawArrays(GL.GL_TRIANGLES, 0, vertexCount); 

更换gl.glDrawElements方法,但它并没有渲染的对象正确。

如何摆脱glDrawElements?

+0

我的错误 gl.glDrawArrays(GL.GL_TRIANGLES,0,vertexCount);必须将 更改为 gl.glDrawArrays(GL.GL_TRIANGLES,0,mNumOfIndices); 现在它的工作 –

+3

仅供参考,最好是发布自己的解决方案作为答案,而不是问题编辑。否则,这个问题永远似乎没有答案。 – Tim

+0

@ Dnu_12即使你回答自己的问题,你也会得到15个代表 – TheAmateurProgrammer

此代码

gl.glDrawArrays(GL.GL_TRIANGLES, 0, vertexCount); 

必须改变,以

gl.glDrawArrays(GL.GL_TRIANGLES, 0, mNumOfIndices); 

(Dnu_12提供)