javascript - THREE.js 着色器仅在调整窗口大小后显示

标签 javascript three.js shader

我是 THREE.js 的新手,我正在使用着色器进行一些实验。由于某种原因,this仅当我调整窗口大小时才会出现。代码是here 。关于为什么它只在调整窗口大小后才显示的任何建议?

最佳答案

我认为问题是因为您只在函数 onWindowResize 中为分辨率统一赋值:

uniforms.resolution.value.x = window.innerWidth;
uniforms.resolution.value.y = window.innerHeight;

因为当你初始化uniform(函数createContent())时,你只需分配一个新的向量(new THREE.Vector2())来解析,它会自动给出(0,0)坐标。查看您的着色器代码,出现一些除以 0 的操作,在我看来,这似乎是屏幕出现时不渲染的原因。

解决方案可能只是在 JavaScript 代码中声明时将坐标分配给统一分辨率,如下所示(函数 createContent()):

var initialResolution = new THREE.Vector2(window.innerWidth,window.innerHeight);
uniforms = {time: {type: "f",  value: 1.0},
            mouseX:     {type: "f",  value: 0.0},
            mouseY:     {type: "f",  value: 0.0},
            resolution: {type: "v2", value: initialResolution}
            [...]
           }

关于javascript - THREE.js 着色器仅在调整窗口大小后显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27157423/

相关文章:

three.js - 使用 VertexShader 更改几何体时,阴影不会更新

javascript - three.js:找到网格到鼠标光标的最近点

compiler-construction - 着色器编译器如何工作?

javascript - 如何在 WebGL 中实现这种旋转螺旋?

javascript - Selenium IDE : executing a test within a test

javascript - 如何建立验证 html 中的至少一个输入字段?

javascript - 如何在html中用不同的颜色显示进度条

three.js - 未定义 GLTFLoader - THREE.js

c++ - 顶点着色器进出?

javascript - 关闭模式时停止/暂停视频(不使用 $ 符号)