【发布时间】:2022-02-04 18:06:21
【问题描述】:
我已使用以下方法使我的 webGL 内容填充浏览器窗口:
css:
canvas
{
float: left;
width: 100%;
height: 100%;
}
还有:
function webGLStart() {
var canvas = document.getElementById("cool3D");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
...
到目前为止,无论窗口大小或全屏大小,这对于保持全覆盖都很有效。问题在于分配相机的纵横比以避免失真。
如何将其设置为 ~"window.innerWidth/window.innerHeight"? OnWindowResize?
【问题讨论】:
-
好吧,只需调用 gl.viewport(0, 0, canvas.width, canvas.height) 并在事件上创建另一个具有新纵横比的投影矩阵(canvas.width / canvas.height) ,将其传递给您的着色器制服。
-
我试过了,但似乎 Firefox 并没有始终如一地处理奇数纵横比。今晚再看看。
标签: javascript dom-events webgl