OpenGL ES纹理原点在不同手机上从顶部/左侧到底部/左侧不同

时间:2011-10-04 09:17:02

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

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

我考虑过为纹理渲染一些测试模式,然后分析输出,但这是太复杂的变通方法。必须有一些更简单的方法。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我在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);