WebGL 透视投影

WebGL Perspective Projection

我有一个立方体场景,其顶点定义如下

const positions = [
    -10.0,  10.0,
     10.0,  10.0,
    -10.0, -10.0,
     10.0, -10.0
  ];

我正在尝试从视场透视矩阵(未显示)到定义如下的指定矩形透视投影矩阵

const n = 0.1;
const f = 100.0;
const l = -50;
const r = 50;
const t = 50;
const b = -50;

Float32Array([
      (2*n/r-l),       0.0,          0.0,  0.0,
            0.0, (2*n/t-b),          0.0,  0.0,
      (r+l/r-l), (t+b/t-b),   -(f+n/f-n), -1.0,
            0.0,       0.0, -(2*f*n/f-n),  0.0
    ]);

我还有一个模型矩阵,它在 z 索引中移动方框 -6 个单位,使其位于近距和远距裁剪平面的边界内。

我是否可以假设在转换任何东西之前,我用来指定框和透视矩阵的坐标都在相同的 space/frame 参考中?因此盒子应该在视图的死点?

盒子使用视野矩阵渲染,而不是上面定义的矩阵。

公式不准确。试试这个(我只添加了括号):

Float32Array([
      (2*n)/(r-l),         0.0,            0.0,  0.0,
              0.0, (2*n)/(t-b),            0.0,  0.0,
      (r+l)/(r-l), (t+b)/(t-b),   -(f+n)/(f-n), -1.0,
              0.0,         0.0, -(2*f*n)/(f-n),  0.0
    ]);