设备 (iPad) 上 OpenGL 纹理中的视觉伪影 - 但模拟器上没有

发布于 2024-10-16 07:20:48 字数 428 浏览 5 评论 0原文

我在 iPad 上使用 OpenGL 纹理,在设备上出现可怕的伪影,而模拟器则显示一切完美且流畅< /强>。我相信 iPhone 也会出现同样的伪影。

如果我查看标题,我会发现一旦包含 OpenGLES/ES2/gl.h,并在另一个文件 OpenGLES/ES1/*.h 中。这会是一个问题吗?

或者设备上出现伪影的原因可能是什么?

模拟器:

模拟器的屏幕截图

真实设备:

真实设备的屏幕截图

I am using an OpenGL texture on an iPad and get horrible artifacts on the device, while the Simulator shows all perfect and smooth. I believe the iPhone would show the same artifacts.

If I look at the headers, I see that once I include OpenGLES/ES2/gl.h, and in another file OpenGLES/ES1/*.h. Could this be a problem?

Or what may be the reason for the artifacts on the device?

Simulator:

screenshot from simulator

Real device:

screenshot from real device

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神妖 2024-10-23 07:20:48

如果您使用 ES 2.0,那么第一个猜测是您遇到了精度问题。 highp、mediump 和 lowp GLSL 精度说明符是提示,而不是绝对命令,因为它们指定所需的最低精度。模拟器给你的精度很可能比你明确要求的更高,但设备却没有。

如果你对此还不够科学,那么尝试将所有内容调高作为测试,然后慢慢调低并凭经验检查结果。

If you're using ES 2.0 then the first guess would be that you have a precision problem. The highp, mediump and lowp GLSL precision specifiers are hints, not absolute commands, as they specify the minimum required precision. It's quite possible that the simulator is giving you more precision than you've explicitly asked for but the device isn't.

If you haven't been scientific about it then try bumping everything to highp as a test, then slowly dial back down and check the results empirically.

岁月静好 2024-10-23 07:20:48

可能是 XCode 在编译期间应用了 PNG 优化(尝试将其关闭);请参阅如何跳过压缩一个 PNG?

虽然您可以在项目设置中使用“压缩 PNG 文件”完全关闭 PNG 优化/压缩(仅当项目的基础 SDK 设置为设备 SDK,而不是模拟器 SDK 时才可见),但您不希望这样做!请阅读上面的链接以了解原因的详细信息,但其要点是优化可以让 iPhone 跳过一些减慢 PNG 显示速度的数学运算。

Xcode 只会优化 PNG 图像
它知道的文件。为防止
优化后的特定 PNG,
你改变它的文件类型所以 Xcode 没有
不再知道它是 PNG。

  1. 在项目窗口中选择文件。
  2. 选择文件 -> 获取信息。
  3. 在“常规”选项卡上,将“文件类型”从 image.png 更改为 file。

It could be the PNG optimization XCode applies during compilation (try turning it off); see How can I skip compressing one PNG?

While you can turn off PNG optimization/compression entirely using "Compress PNG Files" in your project settings (it's visible only if the project's Base SDK is set to a device SDK, not a simulator SDK), you don't want to do this! Read the link above for details on why, but the gist of it is that the optimization lets the iPhone skip some math that slows down PNG display.

Xcode will only optimize PNG image
files that it knows about. To prevent
a specific PNG from being optimized,
you change its file type so Xcode no
longer knows it's a PNG.

  1. Select the file in the project window.
  2. Choose File->Get Info.
  3. On the General tab, change File Type from image.png to file.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文