opengl - JOGL VBO,glDrawElements 的替代品

标签 opengl vbo indices

我在渲染期间运行以下代码

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.glDrawElements 方法

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

但它没有正确渲染对象。

如何摆脱 glDrawElements ?

最佳答案

这段代码

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

必须更改为

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

(由 Dnu_12 提供)

关于opengl - JOGL VBO,glDrawElements 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626810/

相关文章:

c# - 为两个 OpenGL 上下文调用 wglsharelists 时诊断错误 1008

opengl - 顶点数组对象绑定(bind)顺序

c - 渲染一个包含两个 VBO 的 VAO

java - 如何在 OpenGL ES 2 中创建和使用 VBO

java - VBO 纹理不能正常工作 LWJGL

python - 生成包含另一个 NumPy 数组索引的 NumPy 数组

C# + GL 控制混合背景与窗体

c++ - 由于某种原因,OpenGL VAO 指向地址 0

python - 如何在 Numpy 中使用数组作为它自己的索引

performance - 查找矩阵中多个值对的所有索引