【问题标题】:OpenGL ES texture origin differs from top/left to bottom/left on different phonesOpenGL ES纹理原点在不同手机上从上/左到下/左不同
【发布时间】:2011-10-04 09:17:02
【问题描述】:

我目前正在开发基于 NDK 的 OpenGL ES 2.0 应用程序。我正在使用 libjpeg 垂直翻转它来加载纹理(正如 OpenGL 标准所说)。它在三星 Galaxy SII、HTC Desire HD 等(+ Windows 的 SDL 实现)上运行良好。但在某些手机上(如 Android Market 用户报告的三星 Galaxy S GT-I9000)存在一个旧的 Android 特定问题,即 orign 位于图像的顶部/左侧,而不是底部/左侧。我如何确定是否应该在运行时翻转纹理?

我考虑过将一些测试模式渲染到纹理然后分析输出,但它的解决方法太复杂了。一定有更简单的方法。

谢谢!

【问题讨论】:

    标签: android c++ opengl-es android-ndk textures


    【解决方案1】:

    看起来我自己解决了这个问题。我已经开始使用压缩的 ETC1 纹理而不是未压缩的纹理,这有助于解决这个奇怪的问题。

    【讨论】:

      【解决方案2】:

      我想问你关于你的问题...

      我在 gt-i9000 设备和所有其他使用 PowerVR SGX540 或 PowerVR SGX530 gpu 的设备上加载纹理时遇到了一些问题。

      我正在使用 ETC 纹理。它们适用于所有其他设备,但在这些设备上,某些纹理就像黑色......

      您在 glTexParameterf(...) 函数中使用了任何特定设置吗?

      我正在使用这些:

      gl.glActiveTexture(GL10.GL_TEXTURE0);               
      gl.glBindTexture(GL10.GL_TEXTURE_2D, glTextureId);
      gl.glTexParameterf(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR);
      gl.glTexParameterf(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR); 
      gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
      gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);                  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-12
        • 2016-10-01
        • 1970-01-01
        • 2011-10-10
        相关资源
        最近更新 更多