我认为任何使用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)'。我更习惯于仅使用正象限的数学图表中使用的笛卡尔系统,尤其是那些涉及时间的图表。因此,我改变了它。但现在,感谢您的解决方案,我将其改回,并且工作得很好。一个如此简单明显但却显得如此难以捉摸的解决方案。非常感谢,罗伯特!谢谢您的帮助! – 2014-10-18 21:03:12
@BhargavJannabhatla随时:) – 2014-10-18 21:09:02