V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gtq65912
V2EX  ›  问与答

请问这种代码如何做的

  •  1
     
  •   gtq65912 · 2018-09-18 21:42:08 +08:00 · 645 次点击
    这是一个创建于 2210 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一点头绪都没有,看代码不懂怎么看

    代码链接

    图片描述

    //JS 代码
    /*
        @Author:
        @Date:
    */
    
    var container;
    var camera, scene, renderer;
    var uniforms;
    
    init();
    animate();
    
    function init() {
        container = document.getElementById( 'container' );
        camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
        scene = new THREE.Scene();
        var geometry = new THREE.PlaneBufferGeometry( 2, 2 );
        
        /*
            material, video
            more about video material, see
            https://github.com/mrdoob/three.js/blob/master/examples/webgl_materials_video.html
        */
        
        var loader = new THREE.TextureLoader();
      	loader.crossOrigin = true;
      
        uniforms = {
            u_time: { value: 1.0 },
            u_resolution: { type:'v2',value: new THREE.Vector2() },
            u_mouse: { type:'v2',value: new THREE.Vector2() },
            //u_map:{ value:loader.load( '/disturb.jpg' ) },
          	//u_map:{ value:loader.load( 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/141228/earthmap1k.jpg' ) }
        };
        
        var material = new THREE.ShaderMaterial( {
            uniforms: uniforms,
            vertexShader: document.getElementById( 'vertexShader' ).textContent,
            fragmentShader: document.getElementById( 'fragmentShader' ).textContent
        } );
    
        var mesh = new THREE.Mesh( geometry, material );
        scene.add( mesh );
        renderer = new THREE.WebGLRenderer();
        renderer.setPixelRatio( window.devicePixelRatio );
        container.appendChild( renderer.domElement );
        onWindowResize();
    
        window.addEventListener( 'resize', onWindowResize, false );
        window.addEventListener( 'mousemove', onMouseMove, false );
    }
    
    function onWindowResize( event ) {
        uniforms.u_resolution.value.x = window.innerWidth;
        uniforms.u_resolution.value.y = window.innerHeight;
    
        renderer.setSize( window.innerWidth, window.innerHeight );
    }
    
    function onMouseMove( event ) {
        uniforms.u_mouse.value.x = event.clientX;
        uniforms.u_mouse.value.y = event.clientY;
    }
    
    function updateFPS(){
        var current_time, dt;
        if(!window.last_time){
            window.last_time = (new Date).getTime();
        }
        current_time = (new Date).getTime();
        dt = (current_time - last_time) / 1000;
        last_time = current_time;
        window.fps = 1 / dt;
        fps = ~~(window.fps);
        document.getElementById('showfps').innerHTML = 'FPS:'+fps;
    }
    
    //
    function animate( timestamp ) {
        window.fps = 0;
        requestAnimationFrame( animate );
        uniforms.u_time.value = timestamp / 1000;
        renderer.render( scene, camera );
        updateFPS();
    }
    
    

    实在搞不清楚怎么做的

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1723 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:20 · PVG 08:20 · LAX 17:20 · JFK 20:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.