Я думаю, что всем, кто использовал Box2D и OpenGL, известно, что происхождение корпусов Box2D находится в центре тела и для текстур OpenGL, оно находится внизу слева угол. Я использую Box2D для создания тела и прикрепление текстуры OpenGL к нему с помощью функции,Корпус Box2D с смещением начала текстуры OpenGL в GLFW
glTranslatef(Player_Body->GetPosition().x, Player_Body->GetPosition().y, 0.0f)
Однако, поскольку GetPosition()
возвращает происхождение, моя текстура крепится к корпусу с левым нижним углом в центр тела. Как изменить начало текстуры OpenGL в центр текстуры?
Я не думаю, что это имеет какое-либо отношение к преобразованиям World to Screen. По крайней мере, пока нет. Потому что я не занимаюсь какой-либо физикой, просто отображая статическое тело. В настоящее время соотношение составляет Meters:Pixels -> 1:1
(я знаю, что это плохая практика, но это всего лишь временный тест). Моя программа использует GLFW как систему окон. Я ранее использовал GLUT, он отображался правильно, но у меня была проблема контекста монитора с GLUT, поэтому я использую GLFW. Однако код OpenGL для рисования и преобразования остается тем же. Также код Box2D. Итак, как я могу это решить?
P.S. : Я не отправляю код, потому что это скорее вопрос, связанный с логикой. Но я отправлю, если потребуется.
Да, мои вершины определяются как вы сказали. Мой 'glOrtho()' был определен как 'glOrtho (0, 1, 0, 1, -1, 1)'. Я более привык к картезианской системе, используемой в математических графах, которые использовали только положительный квадрант, особенно те, которые связаны с временем. Следовательно, я изменил его. Но теперь, благодаря вашему решению, я изменил его, и он работает отлично. Решение, столь простое и очевидное, все же кажется настолько неуловимым. Большое спасибо, Роберт! Спасибо за помощь! –
@BhargavJannabhatla В любое время :) –