当图像实际上是2的幂时,ThreeJS会调整图像的大小

时间:2019-04-19 08:31:44

标签: javascript three.js

关于使用WebGLRenderer使用threejs自动调整纹理大小,我遇到了一个奇怪的问题。

我知道WebGL要求纹理*的大小为2的幂。

*-使用非LinearFilter的纹理,或没有将包裹作为钳位集的纹理

我的纹理的环绕设置为RepeatWrapping,纹理的sie为 65536 x 512 ,因此为 2 ^ 16 x 2 ^ 9

我假设纹理的大小正确。但是,控制台显示:

THREE.WebGLRenderer: Texture has been resized from (65536x512) to (16384x128)

缩小纹理的大小非常不好,因为在渲染纹理的质量上它非常明显。

我真的不知道我在做什么错。根据文档,一切设置正确。

是否可以防止缩小尺寸?

我认为这无济于事,但我还包含了加载纹理的代码

const texture = new TextureLoader().load(path);
texture.anisotropy = 2;
texture.magFilter = LinearFilter;
texture.minFilter = LinearFilter;
texture.wrapS = RepeatWrapping;
texture.wrapT = RepeatWrapping;
texture.repeat.set(1 / tilesAmountHorizontally, 1 / tilesAmountVertically);

1 个答案:

答案 0 :(得分:0)

因此您可以找出设备支持的最大尺寸

  

var gl = document.getElementById(“ my-canvas”)。getContext(   “ experimental-webgl”);警报(gl.getParameter(gl.MAX_TEXTURE_SIZE))

纹理可以分割并局部应用