Graphics 将设备坐标归一化为窗口坐标

Graphics 将设备坐标归一化为窗口坐标,graphics,3d,theory,Graphics,3d,Theory,我刚刚读了一些关于3d图形背后的理论。据我所知,标准化设备坐标(NDC)是描述水平轴和垂直轴上从-1到1的间隔内的点的坐标。另一方面,窗口坐标描述窗口(0,0)和(宽度、高度)之间的某个点。 所以我把一个点从NDC坐标系转换到窗口系统的公式是 xwin = width + xndc * 0.5 * width ywin = height + ynfv * 0.5 * height 现在的问题是,在glViewport的OpenGL文档中还有一个公式: xwin = ( xndc + 1 ) *

我刚刚读了一些关于3d图形背后的理论。据我所知,标准化设备坐标(NDC)是描述水平轴和垂直轴上从-1到1的间隔内的点的坐标。另一方面,窗口坐标描述窗口(0,0)和(宽度、高度)之间的某个点。 所以我把一个点从NDC坐标系转换到窗口系统的公式是

xwin = width + xndc * 0.5 * width
ywin = height + ynfv * 0.5 * height
现在的问题是,在glViewport的OpenGL文档中还有一个公式:

xwin = ( xndc + 1 ) * width * 0.5 + x
ywin = ( yndc + 1 ) * height * 0.5 + y
现在我想知道我做错了什么。特别是我想知道额外的“x”和“y”是什么意思


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

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


若要查看公式的错误,请尝试变换(0;0)规格化位置,您将得到(宽度;高度)而不是(宽度/2;高度/2)。

哦,我明白了。。是的,这个版本的公式根本没有意义。我没有得到的是x和y引用了函数调用中的参数。现在它有意义了。谢谢