正交坐标如何规范化?

时间:2016-10-28 01:50:53

标签: webgl

WebGL绘制的坐标从-1到1不等。这些坐标通过除以w(透视除法)进行标准化。如何通过正交投影发生这种情况,因为正交投影矩阵是单位矩阵。那就是w将保持1.然后坐标如何用[-1,1]用正交投影标准化?

1 个答案:

答案 0 :(得分:0)

你是什么意思"标准化"?

WebGL并不关心你的矩阵是什么,它只关心你设置gl_Position的内容。

A typical orthographic matrix只需缩放和翻译xy(和z),并将w设置为1。

gl_Position设置为转换为像素的方式的公式类似于

var x = gl_Position.x / gl.Position.w;
var y = gl_Position.y / gl.Position.w;

// convert from -1 <-> 1 to 0 to 1
var zeroToOneX = x * 0.5 + 0.5;
var zeroToOneY = y * 0.5 + 0.5;

// convert from 0 <-> 1 to viewportX <-> (viewportX + viewportWidth)
// and do something similar for Y
var pixelX = viewportX + zeroToOneX * viewportWidth;
var pixelY = viewportY + zeroToOneY * viewportHeight;

其中viewportXviewportYviewportWidthviewportHeight设置为gl.viewport

如果您想要精确的公式,可以在光栅化下查看in the spec

Maybe you might find these tutorials helpful