我是THREE.js的新手,我正在做一些着色器的实验。由于某些原因,this one只有在我调整窗口大小时才会出现。代码是here。为什么它只在调整窗口大小后才出现,有什么建议吗?
发布于 2014-11-27 16:40:29
我认为问题是因为您只在函数onWindowResize中为分辨率uniform赋值:
uniforms.resolution.value.x = window.innerWidth;
uniforms.resolution.value.y = window.innerHeight;
由于在初始化统一函数( 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}
[...]
}
https://stackoverflow.com/questions/27157423
复制相似问题