【问题标题】:Some (random) textures rendering upside down in OpenGL?一些(随机)纹理在 OpenGL 中颠倒渲染?
【发布时间】:2012-03-20 02:22:14
【问题描述】:

我在 Objective-C 中使用 GLKit (OpenGL ES2) 来制作 iPhone 游戏。

我在这方面没有太多经验,所以如果我做错了什么,我不会感到惊讶,但我正在生成一堆对象,它们几乎都是一样的。事实上,我为它们使用了一个类,只是创建了更多类的实例来创建更多对象,但不知何故,有些对象的纹理映射颠倒了。

我根本不明白这是怎么可能的,因为它是用于所有对象的相同代码,其中一些是正确的,而有些则不是。

任何帮助/想法将不胜感激。

【问题讨论】:

  • 您从哪里获取图像?有些格式的原点在左上角,有些在左下角。这仅取决于图像。
  • 图片是从 [UIImage imageNamed:] 生成的 tif。但情况并非如此,因为有些对象渲染正确,有些则没有,所以我不能只是翻转它,因为这会影响所有对象,我仍然会遇到这个问题。还是我错过了什么?
  • 某些格式,例如 TGA(例如)支持两种来源格式。这意味着图片的简单扩展,不排除user1118321给出的建议。
  • 文件格式为tif。这做同样的事情吗?如果是这样,为什么它只发生在一些人身上,而不是全部人身上,如何解决这个问题?干杯
  • 我也不明白这怎么可能,因为我什么都看不到

标签: xcode opengl-es-2.0 textures glkit


【解决方案1】:

检查[UIImage imageOrientation] 属性以查看图像是否翻转。可能是one of these values:

UIImageOrientationUp
UIImageOrientationDown
UIImageOrientationLeft
UIImageOrientationRight
UIImageOrientationUpMirrored
UIImageOrientationDownMirrored
UIImageOrientationLeftMirrored
UIImageOrientationRightMirrored

【讨论】:

  • 我登录了,所有这些都返回 0(我假设是向上)。但并非所有这些都是正确的方式......感谢您的帮助,但也不一定是这样......
  • 所有四边形是否都以相同的缠绕顺序定义(顺时针与逆时针)?是否所有四边形的面都面向相机正面?
  • 是的,它们都使用相同的坐标,所以它们的方向都相同。
  • 你的意思是“所有的坐标都使用相同的坐标?”如果是这样的话,你只会看到其中的 1 个。或者你在他们之间做某种交叉溶解?
  • 使用相同的坐标来制作物体,然后我改变变换矩阵来移动它们
【解决方案2】:

事实证明,这是由于没有一遍又一遍地重复使用纹理,而是在每次需要时重新生成它。

总而言之,最好只生成一次纹理然后再使用它,所以解决方案就是这样做。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2013-05-06
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多