如何设置WebGL相机的宽高比与画布(窗口)的宽高比?

发布于 2024-11-30 07:37:30 字数 473 浏览 2 评论 0原文

我已经使用以下方法让我的 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”? OnWindow 调整大小?

I've made my webGL content fill the browser window using:

css:

canvas
  {
    float: left;
    width: 100%;
    height: 100%;
  }

And also:

function webGLStart() {
    var canvas = document.getElementById("cool3D");
    canvas.width  = window.innerWidth;
    canvas.height = window.innerHeight;
    ...

So far, this is effective for maintaining full coverage, no matterthe size of the window or fullscreen. The problem is assigning the aspect ratio of the camera to avoid distortion.

How can I set it to ~"window.innerWidth/window.innerHeight"? OnWindowResize?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

誰ツ都不明白 2024-12-07 07:37:30

这与视口无关。它实际上是透视矩阵的函数。您的代码会有所不同,但在我自己的每次检测到窗口大小调整时,我都会执行以下操作:

mat4.perspective(45.0, canvas.width/canvas.height, znear, zfar, projectionMat);

更新我的投影矩阵以使用适当的宽高比(宽度/高度)。

This doesn't have anything to do with the viewport. It's actually a function of the perspective matrix. Your code will vary, but in my own every time I detect that the window is resized I do the following:

mat4.perspective(45.0, canvas.width/canvas.height, znear, zfar, projectionMat);

Which updates my projection matrix to use the appropriate aspect ratio (width/height).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文