Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Array THREE.js创建纹理_Javascript_Canvas_Three.js_Terrain - Fatal编程技术网

Javascript 从Array THREE.js创建纹理

Javascript 从Array THREE.js创建纹理,javascript,canvas,three.js,terrain,Javascript,Canvas,Three.js,Terrain,我正在开发一个地形生成器,但我不知道如何绘制颜色。我希望能够产生一个图像,将采取我的整个平面几何。我的问题是,如何根据我的高度贴图创建一个覆盖整个平面几何体(无环绕)的图像?我可以想出一种方法,但我不确定它是否能完全覆盖平面几何,而且效率很低。我会用画布上的颜色在二维视图中绘制它。然后我将画布转换为纹理,这是最好的/唯一的方法吗 更新:使用DataTexture,我遇到了一些错误。我完全不知道我哪里出错了。下面是我得到的错误: WebGL:drawerelements:绑定到纹理单元0的纹理不可

我正在开发一个地形生成器,但我不知道如何绘制颜色。我希望能够产生一个图像,将采取我的整个平面几何。我的问题是,如何根据我的高度贴图创建一个覆盖整个平面几何体(无环绕)的图像?我可以想出一种方法,但我不确定它是否能完全覆盖平面几何,而且效率很低。我会用画布上的颜色在二维视图中绘制它。然后我将画布转换为纹理,这是最好的/唯一的方法吗

更新:使用DataTexture,我遇到了一些错误。我完全不知道我哪里出错了。下面是我得到的错误:
WebGL:drawerelements:绑定到纹理单元0的纹理不可渲染。它可能不是2的幂次函数,并且具有不兼容的纹理过滤,或者不是“纹理完整”。或者纹理是带有线性过滤的浮点或半浮点类型,而OES_Float_linear或OES_Half_Float_linear扩展未启用。

DataTexture和PlaneGeometry的大小均为512^2。我能做些什么来解决这个问题

以下是我使用的一些代码:

编辑:我修好了。这是我使用的工作代码

function genDataTexture(){
    //Set the size.
    var dataMap = new Uint8Array(1 << (Math.floor(Math.log(map.length * map[0].length * 4) / Math.log(2))));
        /* ... */
        //Set the r,g,b for each pixel, color determined above
            dataMap[count++] = color.r;
            dataMap[count++] = color.g;
            dataMap[count++] = color.b;
            dataMap[count++] = 255;
        }
    var texture = new THREE.DataTexture(dataMap, map.length, map[0].length, THREE.RGBAFormat);
    texture.needsUpdate = true;
    return texture;
}
/* ... */
//Create the material
var material = new THREE.MeshBasicMaterial({map: genDataTexture()});
//Here, I mesh it and add it to scene. I don't change anything after this.
函数genDataTexture(){
//设置大小。

var dataMap=new Uint8Array(1如果数据已经存在于您的Javascript代码中,那么最佳的方法是使用
DataTexture
——请参阅常规文档,或者查看
THREE.ImageUtils.generateDataTexture()
这是一种非常方便的方法。

我遇到了一些错误。我在问题中添加了它们。你能告诉我哪里出了问题吗?我找到了。谢谢
THREE。ImageUtils.generateDataTexture()
已被删除,请参阅