首页 文章

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

提问于
浏览
1

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

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

谢谢!

2 回答

  • 0

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

  • 1

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

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

相关问题