WebGL的基本原理

WebGL是一个基于光栅化的API,利用GPU执行顶点着色器和片段着色器计算顶点位置和颜色。它通过缓冲区、属性、一致性变量、纹理和多变变量提供数据给GPU。WebGL程序涉及设置状态、编译和链接着色器、上传数据到缓冲区,最后使用gl.drawArrays或gl.drawElements执行渲染。着色器语言GLSL用于编写顶点和片段着色器,处理坐标和颜色等任务。
摘要由CSDN通过智能技术生成

     Webgl实质上是基于光栅化的API,而不是基于3D的API。webgl根据你提供的代码绘制点,线和三角形。让webgl去做任何事情取决于你提供的代码。

     webgl在你电脑的GPU上运行。所以你写的代码要能在GPU上运行。您以代码对的形式提供该代码。 这两个函数称为顶点着色器和片段着色器,它们都以非常严格类型的C / C ++语言编写,称为GLSL。 (GL Shader Language)。 配对在一起它们被称为程序。

        顶点着色器(vertex shader)的作用是计算顶点的位置。基于函数输出的位置,WebGL可以对包括点,线或三角形在内的各种图元进行光栅化。 当光栅化这些图元时,它会调用第二个用户提供的函数,称为片段着色器。 片段着色器的工作是计算当前正在绘制的图元的每个像素的颜色。

     几乎所有的WebGl API都是为了运行这些函数对设置状态。对于您想要绘制的每一个东西,您都需要设置一堆状态,然后通过调用gl.drawArrays或gl.drawElements来执行一组功能,这些功能在GPU上运行着色器。

     你希望这些函数访问的任何数据必须提供给GPU,着色器可以接受数据的4种方式如下:

 

     1. 属性和缓冲区 Attributes and Buffers

 

     缓冲区是指上传到GPU的二进制数据数组。通常,缓冲区包含位置,法线,纹理坐标,顶点颜色等,当然您可以自由地放任何您想要的内容。

     属性用于指定如何从缓冲区中提取数据并将其提供给您的顶点着色器。 例如,您可以将位置放在缓冲区中,每个位置有三个32位浮点数。 你会告诉一个特定的属性从哪个缓冲区来取出位置,什么类型的数据应该取出(3组件32位浮点数),从缓冲区中的位置开始偏移多少,以及从一个 位置到下一个取多少bytes。

     缓冲区不是随机访问的。 相反,顶点着色器被执行指定的次数。 每次执行时,每个指定的缓冲区中的下一个值将被分配给一个属性。

 

2.一致性变量(Uniforms )

Uniforms是在你执行着色器程序之前设置的全局变量

 

3.(纹理)Textures

纹理是可以在着色器程序中随机访问的数据数组。 最常用的是图像数据,但纹理只是数据,并且可以轻松地包含除颜色之外的东西。

 

4.多变变量 (Varyings )

多变变量 是顶点着色器将数据传递到片段着色器的一种方法。 根据正在渲染的内容,点,线或三角形,在执行片段着色器的同时,将在顶点着色器上变化的值进行插值。

 

WebGl  Hello World

WebGL 只关注两个方面,即投影矩阵的坐标和投影矩阵的颜色。使用 WebGL 程序的任务就是实现具有投影矩阵坐标和颜色的 WebGL 对象即可。可以使用“着色器”来完成上述任务。顶点着色器可以提供投影

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值