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?
答
此代码
gl.glDrawArrays(GL.GL_TRIANGLES, 0, vertexCount);
必须改变,以
gl.glDrawArrays(GL.GL_TRIANGLES, 0, mNumOfIndices);
(Dnu_12提供)
我的错误 gl.glDrawArrays(GL.GL_TRIANGLES,0,vertexCount);必须将 更改为 gl.glDrawArrays(GL.GL_TRIANGLES,0,mNumOfIndices); 现在它的工作 –
仅供参考,最好是发布自己的解决方案作为答案,而不是问题编辑。否则,这个问题永远似乎没有答案。 – Tim
@ Dnu_12即使你回答自己的问题,你也会得到15个代表 – TheAmateurProgrammer