我试图通过使用glFrustum
限制查看量来剪辑屏幕上的图像。在Glfrustum
的官方文档中提到,left, right, top, bottom, near, far
是裁剪的坐标。我认为他们是屏幕坐标,并试图做到:OpenGL的标准化坐标
glFrustum(100, 924, 100, 668, 3, 1000);
上面没有显示任何东西给我在屏幕上。所以,我只是看着某处,看到一些代码如下(但为什么这些坐标负):
glFrustum(-1, 1, -1, 1, 0.5, 1000);
我用excat同样的事情,并开始在屏幕上获得图像的某些部分。随后,我开始拨弄near
的坐标,并注意观看音量如何变化。
glFrustum(-10,10,-10,10,10,1000);
glFrustum(-100,100,-100,100,100,1000);
glFrustum(-0.5,0.5,-0.5,0.5,0.5,1000);
所有上面的方法给图像用相同的输出到我在屏幕上。但是我观察到大多数使用glFrustum的地方,我注意到这些值是从[-1,1]
(如here)和人们在规范化的范围内讨论计算的地方使用的。为什么在归一化值方面对left, right, bottom, top, near, far
的计算很重要(近远还包括在归一化值中?)?是否可以使用屏幕坐标中的值执行相同的操作?