欢迎光临散文网 会员登陆 & 注册

WebGL/Opengl标准化设备坐标(NDC)

2023-03-29 10:09 作者:人间花絮0  | 我要投稿

如果你看得懂下面前两个例子,给定三个坐标点,为什么渲染出这样的图形,说明你是老鸟,不用看这篇文章。

(0, 0.5, 0), (0.5, -0.5, 0), (-0.5, -0.5, 1.5)

(0, 0.5, 0), (1.5, -0.5, 0), (-1.5, -0.5, 1.5)

标准化设备坐标 :( Normalized Device Coordinates, NDC )

标准化设备坐标是一个 x、y 和 z 值在 -1.0 到 1.0 的一小段空间。任何落在范围外的坐标都会被丢弃/裁剪,不会显示在你的屏幕上。下图省略z轴:


代码运行渲染如下:

(0, 0.5), (0.5, -0.5), (-0.5, -0.5)

很多介绍标准化坐标就是上面这句话,三个坐标轴取值范围都是[-1, 1],任何落在范围外的坐标都会被丢弃/裁剪。定义很简单,但表现的表象有很多,如开头的那两个例子。根本原因是这三个范围组成的是一个立方体区域:如下图

先不论左、右手坐标系(z轴朝屏幕外还是屏幕里)

下图是沿z轴正式图:

接下来演示开头那两个例子为什么演示那样:

第一个案例的三个顶点:

(0,0.5,0), (0.5,-0.5,0), (-0.5,-0.5,1.5)

渲染如下:

原因是 (-0.5,-0.5,1.5)这个点的z坐标超出1了,被剪裁掉了。


再演示一下第二案例:

(0,0.5,0), (1.5,-0.5,0), (-1.5,-0.5,1.5)


WebGL/Opengl标准化设备坐标(NDC)的评论 (共 条)

分享到微博请遵守国家法律