我正在将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();
Run Code Online (Sandbox Code Playgroud)
看起来OpenGL ES 2实现中存在一个错误.提示是,当我改变glDrawArrays(GL_POINTS, 0, 200000);
到glDrawArrays(GL_LINES, 0, 200000);
在该设备上没有显示的问题.使用的解决方案(在此处找到)GL_POINTS
是gl_PointSize = 1.0;
在顶点着色器中设置.
编辑:这可能不是一个错误,请看这里:
如果相应的着色器可执行文件未写入gl_PointSize,则在顶点,曲面细分控件和曲面细分评估着色阶段之后,未定义 gl_PointSize(或曲面细分控件着色器的gl_out []数组的gl_PointSize成员的值).
归档时间: |
|
查看次数: |
1381 次 |
最近记录: |