我正在绘制一个坐标为(-.5, -.5), (-.5, .5), (.5, .5), (.5, -.5)
的正方形,我注意到它在我的800 x 600
窗口中被压扁了(看起来完全合乎逻辑)。
我试图修复它,使广场看起来是正方形,而不是矩形。我的方法是使用glOrtho()
,left = -ar
,right = ar
,bottom = -1
来调用top = 1
,其中ar
是我的宽高比({{1} }})。我发现,我对800/600
所做的任何调用都没有效果,包括我已经制作的那个(我可以删除它,什么都不会改变)。
我对glOrtho()
的理解是它将OpenGL上下文的角映射到提供的值,并在这些点之间拉伸所有内容以适应。这是不正确的,还是我正在做一些阻止我glOrtho()
号召唤生效的事情?
glOrtho()
答案 0 :(得分:4)
啊 - 您的问题是,在调用glLoadIdentity
后,您正在调用glOrtho
。 glLoadIdentity
使用单位矩阵替换当前模式(GL_PROJECTION
)中的矩阵,从而消除之前对glOrtho
的任何调用。
尝试在glLoadIdentity
之前调用glOrtho
。