OpenGL ES имеет разные UV-координаты? - PullRequest
2 голосов
/ 23 декабря 2011

Я использую 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? Есть ли функция, которая является общей в обеих платформах?

Ответы [ 2 ]

2 голосов
/ 24 декабря 2011

В OpenGL по умолчанию координата текстуры (0,0) соответствует нижнему левому углу текстуры. Так было всегда (и, вероятно, так будет всегда), так как OpenGL существует.

Тем не менее, вы можете изменить это соглашение, изменив текстурную матрицу или просто сохраняя перевернутую текстуру снизу вверх.

И, кстати, glOrtho не имеет ничего общего с Qt или Android, это функция OpenGL. Так что вы, вероятно, испытываете не разницу между Qt и Android, а между настольными OpenGL и OpenGL ES. Но тем не менее координаты текстуры должны начинаться с нижнего левого угла в обеих версиях.

0 голосов
/ 24 декабря 2011

Откуда вы знаете, что текстура начинается слева внизу и идет вверх справа?Я никогда не слышал об этом типе ориентации для наложения текстур.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...