webGL中的gluOrtho2D

时间:2012-08-07 20:55:05

标签: opengl-es webgl projection-matrix

更新:此代码确实有效。我的错误是对glViewport的流浪电话;这似乎是浏览器窗口锚定,而不是webGL中的画布相关,它正在推动屏幕上的一切。因此,此问题中的代码显示了如何为WebGL创建正确的正交投影:

webGL没有gluOrtho2D。我已复制 - 并转换为OpenGL矩阵应该来自glOrtho

function createOrtho2D(left,right,bottom,top) {
    var near = -1, far = 1, rl = right-left, tb = top-bottom, fn = far-near;
    return [        2/rl,                0,              0,  0,
                       0,             2/tb,              0,  0,
                       0,                0,          -2/fn,  0,
        -(right+left)/rl, -(top+bottom)/tb, -(far+near)/fn,  1];
}

然后我使用createOrtho2D(0,canvas.offsetWidth,canvas.offsetHeight,0)设置我的投影制服。

例如,createOrtho2D(0,1024,768,0) =

[ 0.001953125,                      0,  0,  0, 
            0, -0.0026041666666666665,  0,  0, 
            0,                      0, -1,  0, 
           -1,                      1,  0,  1]

我使用gl.uniformMatrix4fv(this.program.mvp,false,mvp);上传此内容,并在顶点着色器中将其应用于gl_Position = mvp * vec4(vertex,z,1.0);

然而,这不起作用:

  • 屏幕上看不到点10,10
  • 点10,100就在屏幕的顶部

我有什么问题?

0 个答案:

没有答案