【发布时间】:2011-06-16 10:26:12
【问题描述】:
我正在将 iPhone 应用程序从 OpenGL ES 1.1 转换为 ES 2.0。应用程序绘制到 EAGLView,因为它在 Apple 提供的标准 OpenGL ES 应用程序模板中定义。
ES 1.1 代码在模拟器和 iPhone 上都运行良好。新的 ES 2.0 代码在模拟器上运行良好,但在 iPhone 3GS 上,我得到了工件(例如,来自其他应用程序的缩放视图片段),据我所知,这表明我的程序对帧缓冲区感到困惑。我觉得这很奇怪,因为与 ES 1.1 相比,我没有对帧缓冲区处理逻辑进行任何更改。
我在下面包含了执行绘图的代码部分,尽管我看不到重点,因为它在模拟器中工作正常:
GLfloat data[600000];
// initialize data
glClearColor(0.f, 0.f, 0.f, 0.f);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(program);
glUniformMatrix4fv(uniforms[UNIFORM_PROJECTION_MATRIX], 1, GL_FALSE, projection_matrix);
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEW_MATRIX], 1, GL_FALSE, modelview_matrix);
glVertexAttribPointer(ATTRIBUTE_POSITION, 3, GL_FLOAT, GL_FALSE, 0, data);
glEnableVertexAttribArray(ATTRIBUTE_POSITION);
glDrawArrays(GL_POINTS, 0, 200000);
glFlush();
【问题讨论】: