WebGL Ortho-- Я не могу ничего показать - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть полилиния с экстентами

0,0679 0,9080 0,9203 0,1677

Мой фактический видовой экран не такой маленький, очевидно, его 400 х 400. Поэтому моя цель - использовать орто для найдите картинку, нарисованную в этих пределах.

Соответствующий раздел моего кода выглядит следующим образом:

var canvas = document.getElementById('webgl');

var gl = WebGLUtils.setupWebGL(canvas);
if (!gl)
{
    console.log('Failed to get the rendering context for WebGL');
    return;
}

program = initShaders(gl, "vshader", "fshader");
gl.useProgram(program);

gl.viewport( 0, 0, canvas.width, canvas.height );

for(var i = 2; i < lineArray.length; i++){
    points = [];
    // complicated code to parse a string to get the coords and push them to array for each line, I don't think the fault is here.

    var vBuffer = gl.createBuffer();
    gl.bindBuffer(gl.ARRAY_BUFFER, vBuffer);
    gl.bufferData(gl.ARRAY_BUFFER, flatten(points), gl.STATIC_DRAW);

    var vPosition = gl.getAttribLocation(program, "vPosition");
    gl.enableVertexAttribArray(vPosition);
    gl.vertexAttribPointer(vPosition, 4, gl.FLOAT, false, 0, 0);

    var colors = [];
    for(var k = 0; k < lineArray.length - 2; k++) {
        colors.push(vec4(0.0,0.0,0.0,1.0));
    }
    // i just need black for the lines. not sure if this is necessary

    var cBuffer = gl.createBuffer();
    gl.bindBuffer(gl.ARRAY_BUFFER, cBuffer);
    gl.bufferData(gl.ARRAY_BUFFER, flatten(colors), gl.STATIC_DRAW);

    var vColor = gl.getAttribLocation(program, "vColor")
    gl.enableVertexAttribArray(vColor);
    gl.vertexAttribPointer(vColor, 4, gl.FLOAT, false, 0, 0);

    var vPointSize = gl.getUniformLocation(program, "vPointSize");
    gl.uniform1f(vPointSize, 10.0);

    gl.clearColor(1.0,1.0,1.0,1.0);

    var projMatrix = ortho(0.0679, 0.9203,0.1677, 0.9080, -1, 1);
    var projMatrixLoc = gl.getUniformLocation(program, "projMatrix");

    gl.clear(gl.COLOR_BUFFER_BIT);
    gl.uniformMatrix4fv(projMatrixLoc, false, flatten(projMatrix));



    gl.drawArrays(gl.LINE_STRIP, 0, points.length);

У меня болит голова от попыток понять, что я делаю неправильно. Основываясь на примерах, приведенных в моем классе, я думаю, что это должно работать.

...