sam*_*moz 11 opengl graphics viewport
我正在绘制几个从窗口高度和宽度键入的形状(例如圆圈).由于窗口始终以给定大小开始,因此它们被正确绘制,但是当窗口调整大小时,它会使宽高比混乱.
无论窗口大小如何,我如何正确绘制形状?
Gre*_*g S 15
您绝对不希望明确依赖于窗口大小使对象的大小.
正如genpfault已经建议的那样,只要窗口大小发生变化,就可以调整投影矩阵.
关于窗口调整大小的事情:
调整视口
glViewport(0, 0, width, height)
Run Code Online (Sandbox Code Playgroud)调整剪刀矩形(仅在GL_SCISSOR_TEST启用时)
glScissor(0, 0, width, height)
Run Code Online (Sandbox Code Playgroud)调整投影矩阵
在遗留(固定功能管道)OpenGL的情况下,您可以通过以下方式执行此操作:
glFrustum(left * ratio, right * ratio, bottom, top, nearClip,farClip)
Run Code Online (Sandbox Code Playgroud)
要么
glOrtho(left * ratio, right * ratio, bottom, top, nearClip,farClip)
Run Code Online (Sandbox Code Playgroud)
要么
gluOrtho2D(left * ratio, right * ratio, bottom, top)
Run Code Online (Sandbox Code Playgroud)
(假设left, right, bottom并且top都相等ratio=width/height)
如果您使用的是gluPerspective()之类的东西,请使用窗口的宽/高比:
gluPerspective(60, (double)width/(double)height, 1, 256);
Run Code Online (Sandbox Code Playgroud)