ios - OpenGL 在 iPhone/iPad 设备上渲染 GL_POINTS 看起来很糟糕(但在模拟器中看起来完全没问题)

标签 ios opengl-es ios-simulator points glpointsize

我创建了一个 OpenGL ES 游戏,该游戏在 iOS 上使用 GLKView 进行渲染。我还添加了一些位于 GLKView 顶部的自定义 UIButton。在渲染中,我使用 GL_POINTS 渲染模式绘制了一些星星。在模拟器中一切都很好,但在设备上看起来很糟糕。

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

以下是结果的几张图片:

模拟器

Screenshot of game running on iPhone simulator.

设备

enter image description here

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

最佳答案

事实证明,问题与未在 OpenGL ES 着色器中设置 gl_PointSize 有关。屏幕截图实际上让我想到了这个解决方案,因为星星(使用 GL_POINTS 渲染模式绘制)在设备上比在模拟器上大错特错。

据推测,对于 OpenGL 的桌面版本,点大小默认使用 glPointSize 函数设置(除非启用 GL_VERTEX_PROGRAM_POINT_SIZE)。在 OpenGL ES 上没有 glPointSize 函数,因此必须始终使用顶点着色器中的内置 gl_PointSize 变量指定点大小值。

关于ios - OpenGL 在 iPhone/iPad 设备上渲染 GL_POINTS 看起来很糟糕(但在模拟器中看起来完全没问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739780/

相关文章:

ios - 在 Instruments 中进行分析时,OpenGL ES 应用程序似乎运行得更快

ios - 在 XCUITest 的 iOS 模拟器中强制软件键盘

iphone - 基于 Objective-C 与 C++ 文件的数据交换

ios - SceneKit 如何绘制一个显示网格状表面而不是光滑的球体?

c++ - 如何尽早离开 OBJ-C 的世界并在 iOS OpenGL ES 应用程序中进入现有的 C++ 代码库?

xcode - 我们可以使用 Apple Watch 2.0 模拟器推数字表冠吗?

ios - 错误 MT0117 : Can't launch a 32-bit app on a simulator that only supports 64-bit apps (iPhone 6s)

单击 UISearchBar 时 IOS 显示最后 10 个搜索字符串的数组

ios - CallKit 查找用于从 native 电话应用程序启动应用程序的号码

android - 是否可以使用 Android 的顶点数组对象 ES 扩展(使用 GL ES 2)?