WebGL绘制的坐标从-1到1不等。这些坐标通过除以w(透视除法)进行标准化。如何通过正交投影发生这种情况,因为正交投影矩阵是单位矩阵。那就是w将保持1.然后坐标如何用[-1,1]用正交投影标准化?
答案 0 :(得分:0)
你是什么意思"标准化"?
WebGL并不关心你的矩阵是什么,它只关心你设置gl_Position
的内容。
A typical orthographic matrix只需缩放和翻译x
和y
(和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;
其中viewportX
,viewportY
,viewportWidth
和viewportHeight
设置为gl.viewport
如果您想要精确的公式,可以在光栅化下查看in the spec。