尝试在OpenGL ES 2.0中绘制2D三角形

我试图将代码从OpenGL转换为OpenGL ES 2.0(BlackBerry PlayBook)。 到目前为止,我得到的是这个(只是应该绘制三角形的代码的一部分):

void setupScene() { glClearColor(250, 250, 250, 1); glViewport(0, 0, 600, 1024); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } void drawScene() { setupScene(); glColorMask(0, 0, 0, 1); const GLfloat triangleVertices[] = { 100, 100, 150, 0, 200, 100 }; glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, triangleVertices); glEnableVertexAttribArray(0); glDrawArrays(GL_TRIANGLES, 0, 2); } void render() { drawScene(); bbutil_swap(); } 

问题是,当我启动的应用程序,而不是向我显示三角形屏幕只是闪烁(非常快)从白色到灰色。 任何想法我做错了什么?

另外,如果您需要,以下是完整的代码完整的源代码

Solutions Collecting From Web of "尝试在OpenGL ES 2.0中绘制2D三角形"

您正在尝试执行的项目有: http : //code.google.com/p/opengles-book-sa​​mples/

OpenGL ES 2.0不支持固定渲染管道,所以你需要拿出你自己的着色器。 仔细看看效用函数来编译和加载着色器,也就是“Hello Triangle”示例…如果你已经知道了解OpenGL的方法,那么就开始吧。

你必须使用着色器。 而且我也相信glDrawArrays的论点是错误的 – 你需要把索引的数目作为最后一个。

哦,而且你正在使用相当大的三角形位置值,但是你没有设置视图和投影matrix,所以它们会在屏幕之外。

至于闪烁,你需要调用每次绘制glClear,而不是一次。