【问题标题】:generate texture from array in threejs从threejs中的数组生成纹理
【发布时间】:2015-03-27 03:32:40
【问题描述】:

我正在尝试从 threeJS 中的数组生成纹理,但它没有按预期工作。

看来我生成纹理的方式不正确。

如果我使用以下纹理,它会按预期工作。 http://www.html5canvastutorials.com/demos/assets/crate.jpg

crateTex = THREE.ImageUtils.loadTexture('data/crate.jpg');

如果我生成一个虚拟纹理并尝试显示它,它就是全黑的......

var dummyRGBA = new Uint8Array(4 * 4 * 4);
for(var i=0; i< 4 * 4; i++){
  // RGB from 0 to 255
  dummyRGBA[4*i] = dummyRGBA[4*i + 1] = dummyRGBA[4*i + 2] = 255*i/(4*4);
  // OPACITY
  dummyRGBA[4*i + 3] = 255;
}

dummyDataTex = new THREE.DataTexture( dummyRGBA, 4, 4, THREE.RGBAFormat );
dummyDataTex.needsUpdate = true;

dummyTex = new THREE.Texture(dummyDataTex);

【问题讨论】:

    标签: javascript three.js texture2d


    【解决方案1】:

    我认为你的错误在于你制作了纹理的纹理。

    当你这样做时:

    dummyDataTex = new THREE.DataTexture( dummyRGBA, 4, 4, THREE.RGBAFormat );
    

    您在此处创建的对象dummyDataTex 已经是THREE.Texture 类型。

    那么你的下一步:

    dummyTex = new THREE.Texture(dummyDataTex);
    

    没有必要。您应该立即使用dummyDataTex

    【讨论】:

    • 感谢修复。下一个问题是我的“真实”纹理太大而无法通过(256*256*256*4),所以我想我必须找到一些解决方法。将 256*256*4 的 256 个纹理附加到着色器是否有意义?还是谢谢
    • 我不知道。在纹理方面没有太多经验:)
    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多