【问题标题】: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);