OpenGL ES纹理起源在不同的手机上从上/左到下/左是不同的

OpenGL ES texture origin differs from top/left to bottom/left on different phones

本文关键字:ES 纹理 是不同 起源 OpenGL 手机      更新时间:2023-10-16

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

我想渲染一些测试模式的纹理,然后分析输出,但这是太复杂的解决方案。一定有更简单的方法。

谢谢!

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

我想问一下你的问题…

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