OpenGL ES有不同的UV坐标

OpenGL ES has different UV coordinates?

本文关键字:UV 坐标 ES OpenGL      更新时间:2023-10-16

我使用OpenGL ES 1.1与纹理映射。我一直认为纹理的UV坐标系统是从左上到右下。这在android上很好,我已经测试过了。然而,如果我在桌面上用Qt测试它,我的UV坐标系统从左下到右上。这样可以吗?我使用相同的代码来设置OpenGL

glViewport(0, 0, m_screenWidth, m_screenHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
#ifdef DESKTOP_QT
glOrtho(0, 1, 0, 1, -1, 1);
#else
glOrthof(0, 1, 0, 1, -1, 1);
#endif
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

我也想知道,为什么有glOrthof不支持Qt和glOrtho不支持Android?在这两个框架中是否有一个共同的功能?

在OpenGL中,默认的纹理坐标(0,0)对应于纹理的左下角。自从OpenGL存在以来,它就一直是这样(可能永远是这样)。

然而,你可以通过改变纹理矩阵来改变这个惯例,或者仅仅通过将纹理从下到上翻转来存储。

顺便说一下,glOrtho与Qt或Android无关,它是一个OpenGL函数。所以你所经历的可能不是Qt和Android之间的差异,而是桌面OpenGL和OpenGL ES之间的差异。但是无论如何,在两个版本中纹理坐标都应该从左下角开始

你怎么知道纹理是从左下到右上?我从来没有听说过这种类型的纹理映射方向