我一直在环顾四周,找不到答案,但我所做的是创建一个立方体/盒子,相机会根据我所看的位置挤压和拉伸。当屏幕完全呈正方形时,这一切似乎都可以自行解决,但是当我使用 16:9 时,它会拉伸并挤压形状。有可能改变这个吗?
16:9
这是 500px X 500px
作为一个附带问题,是否可以改变背景“天空”的颜色?
OpenGL 使用立方体 [-1,1]^3 来表示标准化设备坐标中的平截头体。视口变换在 x 和 y 方向上将其拉伸到 [0,width] 和 [0,height]。因此,要获得正确的输出纵横比,在将顶点转换到剪辑空间时必须考虑视口尺寸。通常,这是投影矩阵的一部分。旧的固定函数gluPerspective()
函数有一个参数可以直接为给定的纵横比创建平截头体。由于您没有显示任何代码,因此很难建议您实际应该更改什么,但这应该很容易,因为它归结为沿 x 和 y 的简单缩放操作。
附带问题:该颜色由清除它时颜色缓冲区设置的值定义。您可以通过 设置颜色glClearColor()
。