我正在绘制几个与窗口高度和宽度无关的形状(例如圆形)。由于窗口总是以给定的大小开始,它们被正确绘制,但是当窗口被调整大小时,它会弄乱纵横比。
无论窗口大小如何,如何正确绘制形状?
最佳答案
您绝对不想让对象的大小显式依赖于窗口大小。
正如 genpfault 已经建议的那样,只要窗口大小发生变化,就调整投影矩阵。
调整窗口大小时要做的事情:
glViewport(0, 0, width, height)
GL_SCISSOR_TEST
时)glScissor(0, 0, width, height)
对于遗留(固定功能管道)OpenGL,您可以通过以下方式进行操作:
glFrustum(left * ratio, right * ratio, bottom, top, nearClip,farClip)
或者
glOrtho(left * ratio, right * ratio, bottom, top, nearClip,farClip)
或者
gluOrtho2D(left * ratio, right * ratio, bottom, top)
(假设
left, right, bottom
和 top
都相等并且 ratio=width/height
) 关于opengl - 在 OpenGL 中,如何调整正在调整大小的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3267243/