0

如果glviewport将 left 和 bottom 都设置为零,那么为什么会显示负顶点?

例如glviewport(0,0, width,height)

这对我来说意味着您仅将视图设置为在 X 和 Y 为零或更大时查看事物。但当然这实际上并不是发生了什么,所以我不清楚这个调用到底是什么坐标系。

4

1 回答 1

2

glViewport()通过定义从归一化坐标(即剪辑空间)(即视锥在 x/y 中为 -1 到 1)到屏幕(像素)坐标的变换,定义将被绘制到的窗口区域。它只是一个 2D 变换、缩放和偏移 3D 管道的结果,使其成为可以光栅化的东西。改变它不会改变可见的东西,而只会改变它最终的位置。

投影矩阵(与之前应用的任何其他变换相结合)首先定义了点如何变换到裁剪空间,从而确定世界的哪个部分实际上是可见的。

因此,如果您的投影矩阵将具有负坐标的点转换为位于视锥体内,则在应用视口时它们仍然可见。

于 2012-12-29T10:22:09.280 回答