javascript - 无法通过DataTexture加载Uint8Array图像?

标签 javascript three.js

我正在使用 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/

相关文章:

javascript - Three.js动画混合器无法播放?

javascript - 在将网格体添加到 Three.js 中的场景之前,如何设置网格体的位置

svg - three.js 中如何加载和显示 SVG 图形?

javascript - 移动 safari 与主屏幕 webapp

javascript - 将绑定(bind)应用与数组参数一起使用时参数丢失

javascript - Vaadin(自包含)portlet (Liferay) 与 Javascript (d3js)

css - 将 three.js 背景更改为透明或其他颜色

javascript - Three.js - 当相机旋转90度 Angular 时,为什么在x轴和z轴上旋转效果相同?

javascript - 在 JavaScript 中创建字符串值数组的简写

javascript - 单击带有 navbar-toggle 类的按钮时,将出现大的下拉 div