【问题标题】:How can I get rid of artifacts in my OpenGL ES iPhone app?如何摆脱我的 OpenGL ES iPhone 应用程序中的伪影?
【发布时间】:2009-06-06 19:20:53
【问题描述】:

我正在使用 CrashLanding 示例代码中的 Texture2D 类。在模拟器和手机中,我的图像周围都出现了奇怪的伪影。工件是纹理周围的灰色小边框。边界不一致,不包围整个纹理。我正在使用 png。

【问题讨论】:

    标签: iphone opengl-es


    【解决方案1】:

    嘿 MrDatabase - 听起来问题在于您的纹理图像具有预乘 alpha。我在 iPhone 上也遇到过这个问题——它在构建应用程序时执行的 PNG 压缩会自动预乘所有 alpha 值。如果您使用的是glBlend(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA),那么您基本上是应用了两次alpha - 请尝试改用glBlend(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)。 Apple 论坛上有很多关于此的内容:-)

    【讨论】:

    • 谢谢,花了一些时间尝试用不同的组合来解决这个问题。
    【解决方案2】:

    你的纹理都是宽度和高度的 2 次方吗?如果不是,那可能是你的问题。

    我也遇到了纹理小于特定尺寸的问题。我记得有人说过,对于小纹理,分配后清除内存。在 Texture2D 源中将 malloc 更改为 calloc 解决了该问题。

    【讨论】:

    • Texture2D 应该处理非罐图像。
    • 应该,也许。但没有。至少不是我拥有的 CrashLanding 的 Texture2D。
    猜你喜欢
    • 2020-03-24
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多