• 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版本的时钟不会动;

  • 相关阅读:
    P1843 奶牛晒衣服
    P1577 切绳子
    P2777 [AHOI2016初中组]自行车比赛——洛谷
    选择我自己的算法 2012年CCC加拿大高中生信息学奥赛
    如何修改博客园里个人首页背景(form:cot 大犇)
    洛谷P1105 平台
    SPFA模板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板板
    洛谷p2504 HAOI2006 聪明的猴子
    舒适的路线
    超级质数
  • 原文地址:https://www.cnblogs.com/sunqq/p/10417194.html
Copyright © 2020-2023  润新知