• WebGL9----将canvas作为纹理,将动画作为纹理(2)


    <!DOCTYPE html>
         <html>
               <head>
                    <title>clock-three</title>
                    <meta charset="utf-8"/>
                    <style>
                           body {
                                margin: 0px;
                                background-color: #000;
                                overflow:hidden;
                           }
                    </style>
                </head>
                <body onload="start()">
                      <script src="three.js"></script>
                      <script src="js/clock.js"></script>
                      <script>
                            var camera, scene, renderer;
                            var mesh;
                            var texture;

                            function start()
                            {
                                   clock(); //生成canvas变量
                                    init();
                                    animate();
                             }

                             function init() {

                                      renderer = new THREE.WebGLRenderer({ antialias: true});
                                      renderer.setSize( window.innerWidth, window.innerHeight );
                                     document.body.appendChild( renderer.domElement );
                                     camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000 );
                                     camera.position.z = 400;
                                     scene = new THREE.Scene();
                                     var geometry = new THREE.CubeGeometry(150, 150, 150);
                                      texture = new THREE.Texture( canvas);
                                      var material = new THREE.MeshBasicMaterial({map:texture});

                                              //如果不设置为true,纹理就不会更新,你很可能看到得是黑色正方体。原因是纹理绘制需要一段时间,javascript是可以异步运行的

                                       纹理没有被载入之前,就开始渲染了!而 渲染使用了默认的材质颜色;

                                      texture.needsUpdate = true;
                                      mesh = new THREE.Mesh( geometry,material );
                                      scene.add( mesh );

                                      window.addEventListener( 'resize', onWindowResize, false );
                               }

                              function onWindowResize() {
                                        camera.aspect = window.innerWidth / window.innerHeight;
                                        camera.updateProjectionMatrix();
                                        renderer.setSize( window.innerWidth, window.innerHeight );
                               }

                                function animate() {
                                        texture.needsUpdate = true;
                                        mesh.rotation.y -= 0.01;
                                        mesh.rotation.x -= 0.01;
                                        renderer.render( scene, camera );
                                        requestAnimationFrame( animate );

                                 }

                          </script>
                  </body>
            </html>

           经过测试,需要注意:three.js使用版本为97。73版本的时钟不会动;

  • 相关阅读:
    BZOJ_4034 [HAOI2015]树上操作 【树链剖分dfs序+线段树】
    SPOJ QTree【树链剖分】
    BZOJ_1503 [NOI2004]郁闷的出纳员 【Splay树】
    Hibernate学习实例
    Educational Codeforces Round 64 C. Match Points 【二分思想】
    ramn 备份操作
    表值函数--自定义工作日历
    删除win10开始菜单中程序的目录
    C#自定义注释自动生成模板注释
    oralce知识第三章
  • 原文地址:https://www.cnblogs.com/sunqq/p/10417194.html
Copyright © 2020-2023  润新知