【问题标题】:JOGL VBO, alternatives to glDrawElements [closed]JOGL VBO,glDrawElements 的替代品 [关闭]
【发布时间】:2012-09-19 13:25:39
【问题描述】:

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

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 即使您回答自己的问题,您也将获得 15 个代表

标签: opengl vbo indices


【解决方案1】:

这段代码

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

必须改为

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

(由 Dnu_12 提供)

【讨论】:

    猜你喜欢
    • 2012-06-16
    • 2011-06-16
    • 2011-12-17
    • 2010-10-21
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多