检测初始显示

时间:2018-08-17 01:40:32

标签: three.js

我正在初始化时加载八个8192 x 4096纹理。自然,在加载纹理之前,自然会有一个延迟。我有什么办法可以检测到何时进行首次显示?在下面的示例中,我希望onDocumentMouseDown仅在看到纹理时才触发,而不是在加载时屏幕仍然空白时才触发。

function init() {

    camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000 );

    scene = new THREE.Scene();

    renderer = new THREE.WebGLRenderer( { antialias: true } );
    renderer.setPixelRatio( window.devicePixelRatio );
    renderer.setSize( window.innerWidth, window.innerHeight );
    document.body.appendChild( renderer.domElement );

    var sphereGeometry = new THREE.SphereBufferGeometry(500, 100, 100);
    sphereGeometry.scale(-1, 1, 1);

    var renderList = ["DF_DC_DS", "DF_DC_LS", "DF_LC_DS", "DF_LC_LS", "LF_DC_DS", "LF_DC_LS", "LF_LC_DS", "LF_LC_LS"];

    for (var i = 0; i < renderList.length; i++) {

        var texture = new THREE.TextureLoader().load( "img/high-quality/" + renderList[i] + ".jpg", 
            function ( texture ) {
                textureLoadedCount++;
                if (textureLoadedCount == 8) {
                    allLoaded = true;   
                }
            }
        );
        texture.anisotropy = renderer.capabilities.getMaxAnisotropy();

        var material = new THREE.MeshBasicMaterial( { map: texture } );

        var mesh = new THREE.Mesh( sphereGeometry, material );

        scene.add( mesh );

    }

    document.addEventListener( "mousedown", onDocumentMouseDown, false );

}

0 个答案:

没有答案