规范化设备坐标到窗口坐标的转换

3

我刚刚阅读了一些有关3D图形理论的内容。据我所知,规范化设备坐标(NDC)是描述横轴和纵轴上区间为-1到1的点的坐标。另一方面,窗口坐标描述了窗口大小为(宽度,高度)之间的某个点。 因此,将一个点从NDC坐标系转换为窗口坐标系的公式应该是:

xwin = width + xndc * 0.5 * width
ywin = height + ynfv * 0.5 * height

现在的问题是,在OpenGL文档中,glViewport有另一种公式:
xwin = ( xndc + 1 ) * width * 0.5 + x
ywin = ( yndc + 1 ) * height * 0.5 + y

现在我在想我做错了什么。特别是我想知道额外的“x”和“y”是什么意思。

希望这个问题不太“与编程无关”,但我认为它与图形编程有关。

1个回答

9

视口不一定从(0; 0)开始,因此OpenGL文档中的“x”和“y”指的是视口的起始位置。

要查看您的方程式有什么问题,请尝试转换归一化的(0; 0)位置,您将得到(width; height)而不是(width / 2; height / 2)。


哦,我明白了...是的,我这个公式的版本根本没有意义。我没有理解的是,x和y是函数调用中的参数。现在我明白了。谢谢 - okoman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接