开发手册 欢迎您!
软件开发者资料库

WebGL - 颜色

WebGL颜色 - 从简单和简单的步骤学习WebGL,从基本到高级概念,包括简介,Html5画布概述,基础知识,图形管道,示例应用程序,上下文,几何,着色器,关联属性和缓冲对象,绘制模型,绘图点,绘制三角形,绘图模式,绘制四边形,颜色,翻译,缩放,旋转,立方体旋转,交互式立方体。

在前面的所有示例中,我们通过为 gl_FragColor 变量指定所需的颜色值,将颜色应用于对象.除此之外,我们可以为每个顶点定义颜色和减号;就像顶点坐标和索引一样.本章举例说明如何使用WebGL将颜色应用于四边形.

应用颜色

要应用颜色,您必须定义颜色JavaScript数组中使用RGB值的每个顶点的颜色.您可以为所有顶点指定相同的值,以使对象具有唯一的颜色.定义颜色后,您必须创建一个颜色缓冲区并将这些值存储在其中,并将其与顶点着色器属性相关联.

在顶点着色器中,以及coordinates属性(保持顶点的位置),我们定义属性变化来处理颜色.

颜色属性保存每个顶点的颜色值,变化是作为片段着色器输入传递的变量.因此,我们必须将颜色值分配给变化.

在片段着色器中,变化保持颜色值分配给 gl_FragColor ,它保存对象的最终颜色.

应用颜色的步骤

创建一个WebGL应用程序以绘制Quad并为其应用颜色需要执行以下步骤.

步骤1 : 号;准备画布并获取WebGL渲染上下文

在此步骤中,我们使用 getContext()获取WebGL渲染上下文对象.

第2步和第2步;定义几何并将其存储在缓冲对象中

可以使用两个三角形绘制正方形.因此,在此示例中,我们提供两个三角形(具有一个公共边)和索引的顶点.由于我们想要为其应用颜色,因此还定义了一个包含颜色值的变量,并为每个颜色值分配了颜色值(红色,蓝色,绿色和粉红色).

  var vertices = [ -0.5,0.5,0.0, -0.5,-0.5,0.0, 0.5,-0.5,0.0, 0.5,0.5,0.0 ];  var colors = [0,0,1,0,0,0,0,1,0,1,0,1,];  indices = [3,2,1,3,1,0];


第3步和第3步;创建和编译着色器程序

在此步骤中,您需要编写顶点着色器和片段着色器程序,编译它们,并通过链接这两个程序来创建组合程序.

  • 顶点着色器 : 在程序的顶点着色器中,我们定义了矢量属性来存储3D坐标(位置)和每个顶点的颜色.声明 varing 变量将颜色值从顶点着色器传递到片段着色器.最后,存储在color属性中的值被分配给 vary .

var vertCode = 'attribute vec3 coordinates;'+   'attribute vec3 color;'+   'varying vec3 vColor;'+   'void main(void) {' +      ' gl_Position = vec4(coordinates, 1.0);' +      'vColor = color;'+   '}';


  • 片段着色器 : 在片段着色器中,我们将变化分配给 gl_FragColor 变量.

var fragCode = 'precision mediump float;'+   'varying vec3 vColor;'+   'void main(void) {'+      'gl_FragColor = vec4(vColor, 1.);'+   '}';

步骤4 : 将着色器程序与缓冲区对象相关联

在此步骤中,我们将缓冲区对象与着色器程序相关联.

第5步 : 绘制所需对象

由于我们使用索引绘制两个将形成四边形的三角形,因此我们将使用方法 drawElements().对于这种方法,我们必须传递索引的数量. indices.length 的值表示索引的数量.

gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT,0);

示例 - 应用颜色

以下程序演示了如何使用WebGL应用程序绘制四边形并为其应用颜色.