我正在使用 DataTexture 加载 Uint8Array 图像 ( download link ),这里是我的代码:
var map = new THREE.DataTexture( data, 128, 128, THREE.RGBFormat );
map.needsUpdate = true;
material.needsUpdate = true;
material.map = map;
但是纹理是黑色的并收到这些错误:
在火狐浏览器中:
Error: WebGL: texImage2D: not enough data for operation (need 49152, have 5210)
Error: WebGL: generateMipmap: Level zero of texture is not defined.
在 Chrome 中:
WebGL: INVALID_OPERATION: texImage2D: ArrayBufferView not big enough for request
有什么建议可以让它发挥作用吗?
谢谢。
(我尝试将 Uint8Array 图像转换为 Data64 并加载到漫反射贴图,但我不想使用这种方式,因为我试图在 Chrome F12 中的网络选项卡中隐藏纹理,使用 data64 将显示纹理...)
最佳答案
我看到 Three.js 内部调用了 THREE.Texture,而 DataTexture 是它的包装器。其原因可能是数据已损坏,因为纹理三会期望来自 data64 的某些内容,这就是您使用 data64 获得正确显示的原因。
关于javascript - 无法通过DataTexture加载Uint8Array图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690207/