У меня есть полилиния с экстентами
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);
У меня болит голова от попыток понять, что я делаю неправильно. Основываясь на примерах, приведенных в моем классе, я думаю, что это должно работать.