1

我有一个关于计算机图形管道的问题。

在 OpenGL 中,我们通常在 reshape 回调中使用 glViewport 函数。我听说 glViewport 与视口转换有关。

在我们的顶点着色器中,我们通常计算我们的顶点并使这些顶点定义在裁剪坐标(归一化裁剪立方体)中。

视口转换何时起作用?

我猜如果顶点着色器将顶点信息输出到光栅化器,那么管道会翻译这些顶点信息。

X(v) = (x + 1)/2 * 宽度 + 左 y(v) = (y + 1)/2 * 高度 + 底部。(视口变换)

因此,我认为 glViewport 只是设置了在完成顶点着色器工作后如何进行视口转换。

这样对吗?

4

1 回答 1

1

在OpenGL中,我们通常在reshape回调中使用glViewport函数

不,“我们”没有。glViewport属于显示功能。

因此,我认为 glViewport 只是设置了在完成顶点着色器工作后如何进行视口转换。

是的,它就是这样工作的。本质上,视口只是另一个变量,与制服没有太大区别,它包含顶点变换步骤的参数。然而,由于变换的最后一步,同质分割和裁剪是硬连线的,并且视口变换在此之后发生,因此必须单独设置。

于 2017-01-16T10:43:30.967 回答