Tengo un problema con el cambio de tamaño del lienzo y la sincronización gl.viewport
.
Digamos que empiezo con el lienzo 300x300 canvas y la inicialización de gl.viewport
en los mismos tamaños (gl.vieport(0, 0, 300, 300)
).
Después de eso, en la consola del navegador hago mis pruebas:Webgl gl.viewport cambio
I'm changing size of my canvas, usando jQuery, llamar algo así como
$("#scene").width(200).height(200)
After this, i'm calling my resizeWindow function:
function resizeWindow(width, height){ var ww = width === undefined? w.gl.viewportWidth : width; var h = height === undefined? w.gl.viewportHeight : height; h = h <= 0? 1 : h; w.gl.viewport(0, 0, ww, h); mat4.identity(projectionMatrix); mat4.perspective(45, ww/h, 1, 1000.0, projectionMatrix); mat4.identity(modelViewMatrix); }
- función que está sincronizando ventana con dimensiones requeridas
Desafortunadamente, mi gl.viewport
después de esta llamada tarda sólo una parte de mi lienzo.
¿Alguien podría decirme qué está pasando mal?
Lamento haber malinterpretado gl.viewportWidth o gl.viewportHeight, estos parámetros asignados en el momento después de inicializar el objeto gl (función js), por lo que gl.viewportWidth = canvas.clientWidth y gl.viewportHeight = canvas.clientHeight. Además, si estas cosas se escriben mal, se corregirían, pero aparece un problema cuando trato de llamar manualmente a resizeWindow, en caso de que cuando se transmitan los parámetros deberían ser dominantes (ver código).
Para gl.drawingBufferWidth y gl.drawingBufferHeight muchísimas gracias, realmente me ha ayudado – jorj