作家
登录

WebGL实现雨水特效实验

作者: 来源: 2017-04-07 09:19:29 阅读 我要评论

  • vec4 coord = gl_FragCoord; 
  •  
  • // sets the color 
  •  
  • gl_FragColor = vec4(coord.x/800.0,coord.y/600.0, 0.0, 1.0); 
  •  
  •  
  • </script> 
  • 让雨点之间互相感化是很难快速计算的——跟着新的雨点的到来,运算量将会呈指数级增长——所以我们必须做一点优化。

    如今我们把着色器连接到 WebGL 情况中去:

    1. function createShader(gl,source,type){ 
    2.  
    3. var shader = gl.createShader(type); 
    4.  
    5. source = document.getElementById(source).text; 
    6.  
    7. gl.shaderSource(shader, source); 
    8.  
    9. gl.compileShader(shader); 
    10.  
    11. return shader; 
    12.  
    13.  
    14. var vertexShader = createShader(gl, 'vert-shader', gl.VERTEX_SHADER); 
    15.  
    16. var fragShader = createShader(gl, 'frag-shader', gl.FRAGMENT_SHADER); 
    17.  
    18. var program = gl.createProgram(); 
    19.  
    20. gl.attachShader(program, vertexShader); 
    21.  
    22. gl.attachShader(program, fragShader); 
    23.  
    24. gl.linkProgram(program); 
    25.  
    26. gl.useProgram(program); 

    接下来我们创建一个对象然后在它膳绫擎绘制我们的着色器。这里我们来画个矩形——确切地说,画两个矩形。

    1. // create rectangle 
    2.  
    3. var buffer = gl.createBuffer(); 
    4.  
    5. gl.bindBuffer(gl.ARRAY_BUFFER, buffer); 
    6.  
    7. gl.bufferData( 
    8.  
    9. gl.ARRAY_BUFFER, 
    10.  
    11. new Float32Array([ 
    12.  
    13. -1.0, -1.0, 
    14.  
    15. 1.0, -1.0, 
    16.  
    17. -1.0, 1.0, 
    18.  
    19. -1.0, 1.0, 
    20.  
    21. 1.0, -1.0, 
    22.  
    23. 1.0, 1.0]), 
    24.  
    25. gl.STATIC_DRAW); 
    26.  
    27. // vertex data 
    28.  
    29. var positionLocation = gl.getAttribLocation(program, "a_position"); 
    30.  
    31. gl.enableVertexAttribArray(positionLocation); 
    32.  
    33. gl.vertexAttribPointer(positionLocation, 2, gl.FLOATfalse, 0, 0); 

    最后,绘制全部图像:

    1. gl.drawArrays(gl.TRIANGLES, 0, 6); 

    接下来我们须要一段法度榜样,它由顶点着色器和片段着色器(译注:『片段着色器』又称『像素着色器』)构成。着色器就是一些函数:顶点着色器在每个顶点履行一次,而片段着色器在每个像素上都被调用一次。它们的义务分别是返回坐标和色彩。这是我们的 WebGL 应用的核心。

    结不雅如下:


      推荐阅读

      JavaScript错误处理和堆栈追踪浅析

    有时我们会忽视缺点处理和客栈追踪的一些细节, 然则这些细节对于写竽暌闺测试或缺点处理相干的库来说是异常有效的. 例如这周, 对于 Chai 就有一个异常棒的PR, 该PR极大年夜地改良了我们处>>>详细阅读


    本文标题:WebGL实现雨水特效实验

    地址:http://www.17bianji.com/lsqh/34616.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)