不同手机上的 OpenGL ES 纹理原点从上/左到下/左不同

发布于 2024-12-08 13:56:55 字数 324 浏览 0 评论 0原文

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

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

谢谢!

I'm currently developing an NDK-based OpenGL ES 2.0 app. And i'm loading textures using libjpeg flipping it vertically (as OpenGL standard says). It works fine on Samsung Galaxy SII, HTC Desire HD and so on (+ Windows's SDL implementation). But on some phones (like Samsung Galaxy S GT-I9000 by reports from Android Market users) there is an old Android-specific issue with orign located at the top/left side of the image, not the bottom/left. How can i determine, should i flip textures or not at a runtime?

I thought about rendering some test pattern to the texture and then analizing output, but it's too complex workaround. There must be some easier way.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦情居士 2024-12-15 13:56:55

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

Looks like i've fixed this problem myself. I've started using compressed ETC1 textures instead of uncompressed ones and that helped to fix this strange issue.

以酷 2024-12-15 13:56:55

我想询问您的问题...

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

i want to ask you about your issue...

i am having some problems loading textures on gt-i9000 device and all other devices that use the PowerVR SGX540 or PowerVR SGX530 gpu.

I am using the ETC textures. They work on all other devices but on these devices some textures are like black...

Are theer any specific setting sthat you are using in you glTexParameterf(...) functions ?

I am using these :

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);                  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文