Я использую Шрифтсташ для загрузки и рендеринга текста. Однако, когда я рисую, текст переворачивается по вертикали: перевернутый текст
Я не могу изменить происхождение, поэтому я думаю, что мне нужно повернуть текстуру здесь, однако я не уверен, как это сделать и правильно ли это.
Я устанавливаю матрицы следующим образом:
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
glViewport(0, 0, viewport[2], viewport[3]);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, viewport[2], viewport[3], 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
Хорошо, я отредактировал свой пост
Так перевернуты ВСЕ координаты или только текст? Вы можете перевернуть свою ортоматрицу glOrtho(0, viewport[2], 0, viewport[3], -1, 1);
Я также все еще пытаюсь понять ваше ограничение «Я не могу изменить начало координат». Почему нет?
Переворачивается только текст, я пытался перевернуть орто-матрицу, но текст просто не отображается или, возможно, выходит за пределы. Что касается ограничения, я не уверен, что fontstash поддерживает это (я работаю с устаревшим кодом), поэтому я подумал о повороте текстуры.
Если вы перевернули область просмотра и ничего не появилось, это может быть связано с тем, что у вас включено отсечение лица (glEnable(GL_CULL_FACE)
), которое по умолчанию отбрасывает заднюю поверхность в соответствии с порядок намотки, который по умолчанию равен glFrontFace(GL_CCW)
, и вам нужно изменить это на GL_CW
если вы переворачиваете вещи в Y, но не в X. (Если он вообще используется).
Оно работает! Я опубликую это как ответ. Большое спасибо!
Вик указал, что у меня было включено отсечение лиц, и его отключение прекрасно решило проблему при переворачивании орфографической матрицы.
Этот код рендеринга не сильно влияет на состояние и использует более старый (не современный) OpenGL. Поэтому вам нужно убедиться, что ваши матрицы видового экрана и модели-вида-проекции правильно указаны в цикле рендеринга ваш (для чего, возможно, вам следует показать код в своем вопросе). Ищите (glViewport, glMatrixMode и любые матричные функции, которые вы используете для установки вашей камеры)