【发布时间】:2012-03-21 18:21:17
【问题描述】:
我正在尝试使用 OpenGL ES 2.0 在 android (API 10) 上创建一个简单的测试程序来绘制一个简单的矩形。我可以让它与直接引用顶点的浮动缓冲区一起工作,但我宁愿用 VBO/IBO 来做。我已经寻找了无数小时试图找到一个简单的解释(教程),但还没有遇到一个。我的代码编译和运行都很好,但是屏幕上除了清晰的颜色之外什么都没有显示。
这里有一些代码块可以帮助解释我现在是如何设置它的。
onSurfaceChanged() 的一部分:
int[] buffers = new int[2];
GLES20.glGenBuffers(2, buffers, 0);
rectVerts = buffers[0];
rectInds = buffers[1];
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, rectVerts);
GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, (rectBuffer.limit()*4), rectBuffer, GLES20.GL_STATIC_DRAW);
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, rectInds);
GLES20.glBufferData(GLES20.GL_ELEMENT_ARRAY_BUFFER, (rectIndices.limit()*4), rectIndices, GLES20.GL_STATIC_DRAW);
onDrawFrame() 的一部分:
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, rectVerts);
GLES20.glEnableVertexAttribArray(0);
GLES20.glVertexAttribPointer(0, 3, GLES20.GL_FLOAT, false, 0, 0);
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, rectInds);
GLES20.glDrawElements(GLES20.GL_TRIANGLES, 6, GLES20.GL_INT, 0);
【问题讨论】:
-
列出任何书籍或简单教程会很有帮助。