Ios iPhone/iPad设备上的OpenGL渲染GL_点看起来很糟糕(但在模拟器中看起来完全不错)

Ios iPhone/iPad设备上的OpenGL渲染GL_点看起来很糟糕(但在模拟器中看起来完全不错),ios,opengl-es,ios-simulator,points,glpointsize,Ios,Opengl Es,Ios Simulator,Points,Glpointsize,我已经创建了一个OpenGL ES游戏,在iOS上使用GLKView进行渲染。我还添加了一些自定义UI按钮,它们位于GLKView的顶部。在渲染中,我使用GL\u点渲染模式绘制了一些星星。一切在模拟器中呈现良好,但在设备上看起来很糟糕 我想知道是否有人对我应该在设备上配置/寻找的东西有什么建议,这些东西可能需要设置才能获得正确的渲染图像 以下是结果的两张图片: 模拟器 设备 (请忽略自定义按钮缩放的差异-设备屏幕截图是在iPad上拍摄的)。事实证明,问题在于OpenGL ES的着色器中没有设

我已经创建了一个OpenGL ES游戏,在iOS上使用GLKView进行渲染。我还添加了一些自定义UI按钮,它们位于GLKView的顶部。在渲染中,我使用
GL\u点
渲染模式绘制了一些星星。一切在模拟器中呈现良好,但在设备上看起来很糟糕

我想知道是否有人对我应该在设备上配置/寻找的东西有什么建议,这些东西可能需要设置才能获得正确的渲染图像

以下是结果的两张图片:

模拟器

设备


(请忽略自定义按钮缩放的差异-设备屏幕截图是在iPad上拍摄的)。

事实证明,问题在于OpenGL ES的着色器中没有设置
gl\u PointSize
。屏幕截图实际上让我找到了这个解决方案,因为星星(使用
GL_点
rendering模式绘制)在设备上比在模拟器上错误得多


大概对于OpenGL的桌面版本,默认情况下使用
glPointSize
功能设置点大小(除非启用了
GL\u VERTEX\u PROGRAM\u point\u size
)。在OpenGL ES上没有
glPointSize
函数,因此必须始终使用顶点着色器中的内置
gl\u PointSize
变量指定点大小值。

在渲染之前是否使用
glClearColor()
glClear()
初始化绘图空间?如果不是的话,你可能会选择以前存在的工件。嘿,布拉德,我仔细检查了这个,我的glClearColor/glClear似乎被调用了,并且做了正确的事情。我认为如果问题与此有关,那么我也会在模拟器中看到相同的结果,但感谢您的建议-这是需要检查的!如果我使用的是GLKit的GLKBaseEffect,我该怎么做?我不认为你可以-你必须编写着色器。避免
GLKBaseEffect
。它试图模仿固定的函数管道,只是学习着色器如何工作并直接使用它们。老实说,我不知道他们为什么要构建
glkbaseffect
或其派生类。