Javascript 能否在three.js中将作为纹理加载的图像作为其他纹理mipmap馈送?

Javascript 能否在three.js中将作为纹理加载的图像作为其他纹理mipmap馈送?,javascript,three.js,webgl,textures,mipmaps,Javascript,Three.js,Webgl,Textures,Mipmaps,这是个问题,不是问题 我正在使用atlas纹理的地形中工作。为了减少颜色溢出,我想使用外部工具中内置的mipmaps来填充地形纹理 目前我正在使用 terrainTexture = THREE.ImageUtils.loadTexture 。。。要加载每个mipmap级别并将其添加到级别0纹理 terrainTexture.mipmaps[mipsTexs[tex.sourceFile]] = tex.image; 。。。mipsTexs只是一个关联数组,用于知道每个纹理对应的位置 真正的

这是个问题,不是问题

我正在使用atlas纹理的地形中工作。为了减少颜色溢出,我想使用外部工具中内置的mipmaps来填充地形纹理

目前我正在使用

terrainTexture = THREE.ImageUtils.loadTexture 
。。。要加载每个mipmap级别并将其添加到级别0纹理

terrainTexture.mipmaps[mipsTexs[tex.sourceFile]] = tex.image;
。。。mipsTexs只是一个关联数组,用于知道每个纹理对应的位置

真正的问题是,当我输入手动mipmap和彩色mipmap时,地形看起来都是黑色的,但是webgl生成的mipmap会产生颜色溢出的伪影

手动mipmap的唯一示例在示例中,但纹理的mipmap馈送是画布。我想知道我看到的全黑问题是否是由于使用JS图像而不是画布造成的。

展示了如何构建自己的mipmap:

function mipmap( size, color ) {

    var imageCanvas = document.createElement( "canvas" ),
    context = imageCanvas.getContext( "2d" );

    imageCanvas.width = imageCanvas.height = size;

    context.fillStyle = "#444";
    context.fillRect( 0, 0, size, size );

    context.fillStyle = color;
    context.fillRect( 0, 0, size / 2, size / 2 );
    context.fillRect( size / 2, size / 2, size / 2, size / 2 );
    return imageCanvas;

}

var canvas = mipmap( 128, '#f00' );
var textureCanvas1 = new THREE.Texture( canvas, THREE.UVMapping, THREE.RepeatWrapping, THREE.RepeatWrapping );
textureCanvas1.repeat.set( 1000, 1000 );
textureCanvas1.mipmaps[ 0 ] = canvas;
textureCanvas1.mipmaps[ 1 ] = mipmap( 64, '#0f0' );
textureCanvas1.mipmaps[ 2 ] = mipmap( 32, '#00f' );
textureCanvas1.mipmaps[ 3 ] = mipmap( 16, '#400' );
textureCanvas1.mipmaps[ 4 ] = mipmap( 8,  '#040' );
textureCanvas1.mipmaps[ 5 ] = mipmap( 4,  '#004' );
textureCanvas1.mipmaps[ 6 ] = mipmap( 2,  '#044' );
textureCanvas1.mipmaps[ 7 ] = mipmap( 1,  '#404' );
textureCanvas1.needsUpdate = true;

谢谢你的回复。作为记录,我想说的是,无论是画布还是图像都可以作为mipmap馈送。在我的例子中,问题是由于一些生成错误的mipmap,mipmap-piramid的最后3个级别的大小没有正确的大小,因此整个纹理被视为黑色,作为正确的纹理丢弃。