NDCs
到目前为止,我们定义的顶点坐标全部都坐落在[-1, +1]范围内,比如下面这四个点。这是因为OpenGL只知道如何处理这个范围内的顶点,这个范围被称作NDCs(Normalized-Device Coordinates)。
def vertices = [
// x y
-0.5f, -0.5f,
-0.5f, 0.5f,
0.5f, 0.5f,
0.5f, -0.5f,
] as float[]
我们暂时可以这样理解:只有这个范围内的点会被OpenGL绘制到屏幕上,而且,无论最终的绘制区域是多大,OpenGL都把它当做一个正方形区域来处理。所以,如果上面四个点表示由两个三角形构成的矩形的话(Triangle Fan),它的长和宽分别是绘制区域长和宽的一半,如下图所示:
把绘制区域拉窄看看:
虚拟坐标系
从上面的两幅截图可以看出,直接使用NDC有很大的问题,因为最终绘制出来的图形会随绘制区域的不同而大相径庭。为了解决这个问题,我们不直接使用NDC,而是使用一个考虑了绘制区域