| S.No. | 類(lèi)型 | 描述 |
|---|---|---|
| 1 | void |
表示一個(gè)空值
|
| 2 | bool |
接受true或false
|
| 3 | int |
這是一個(gè)有符號(hào)整數(shù)數(shù)據(jù)類(lèi)型
|
| 4 | float |
這是一個(gè)浮點(diǎn)標(biāo)量數(shù)據(jù)類(lèi)型
|
| 5 | vec2, vec3, vec4 |
正分量浮點(diǎn)矢量
|
| 6 | bvec2, bvec3, bvec4 |
布爾矢量
|
| 7 | ivec2, ivec3, ivec4 |
有符號(hào)整數(shù)矢量
|
| 8 | mat2, mat3, mat4 | 2x2, 3x3, 4x4 浮點(diǎn)矩陣 |
| 9 | sampler2D |
訪問(wèn)2D紋理
|
| 10 | samplerCube |
訪問(wèn)立方體映射紋理
|
| S.No. |
修飾符
|
描述 |
|---|---|---|
| 1 | attribute |
這個(gè)修飾符充當(dāng)每個(gè)頂點(diǎn)數(shù)據(jù)的頂點(diǎn)著色器和OpenGL ES之間的鏈接。此頂點(diǎn)著色器屬性的值在每次執(zhí)行時(shí)變化
|
| 2 | uniform |
這修飾符鏈接著色器程序及其WebGL的應(yīng)用程序。不同屬性修飾詞,制服(uniforms)的值不會(huì)改變。制服(uniforms)是只讀的; 可以用它們與任何基本數(shù)據(jù)類(lèi)型來(lái)聲明一個(gè)變量。
示例 - 統(tǒng)一 vec4 光的位置;
|
| 3 | varying |
這個(gè)修飾符形成頂點(diǎn)著色器的內(nèi)插數(shù)據(jù)和片段著色器之間的聯(lián)系。它可用于下列數(shù)據(jù)類(lèi)型- float, vec2, vec3, vec4, mat2, mat3, mat4, 或數(shù)組。
示例 - 改變VEC3正常;
|
| S.No. | 變量 | 描述 |
|---|---|---|
| 1 | highp vec4 gl_Position; |
保存頂點(diǎn)的位置
|
| 2 | mediump float gl_PointSize; |
保存變換點(diǎn)的大小。此變量的單位是像素
|
attribute vec2 coordinates;
void main(void) {
gl_Position = vec4(coordinates, 0.0, 1.0);
};
| S.No. | 變量 | 描述 |
|---|---|---|
| 1 | mediump vec4 gl_FragCoord; |
保存幀緩沖器中的片段位置
|
| 2 | bool gl_FrontFacing; |
存放屬于一個(gè)前置原語(yǔ)的片段
|
| 3 | mediump vec2 gl_PointCoord; |
存放在一個(gè)點(diǎn)(點(diǎn)僅光柵化)片段的位置
|
| 4 | mediump vec4 gl_FragColor; |
保存著色器的輸出片段的顏色值
|
| 5 | mediump vec4 gl_FragData[n] |
持有該片段顏色的色彩附件n
|
void main(void) {
gl_FragColor = vec4(0, 0.8, 0, 1);
}
var vertCode =
'attribute vec2 coordinates;' +
'void main(void) {' +
' gl_Position = vec4(coordinates, 0.0, 1.0);' +
'}';
Object createShader (enum type)
gl.VERTEX_SHADER創(chuàng)建頂點(diǎn)著色器
gl.FRAGMENT_SHADER 創(chuàng)建片段著色器。
void shaderSource(Object shader, string source)
shader ? 必須創(chuàng)建Shader對(duì)象傳遞作為一個(gè)參數(shù)。
Source ? 必須以字符串格式傳入著色器程序代碼。
compileShader(Object shader)
// Vertex Shader
var vertCode =
'attribute vec3 coordinates;' +
'void main(void) {' +
' gl_Position = vec4(coordinates, 1.0);' +
'}';
var vertShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertShader, vertCode);
gl.compileShader(vertShader);
// Fragment Shader
var fragCode =
'void main(void) {' +
' gl_FragColor = vec4(0, 0.8, 0, 1);' +
'}';
var fragShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fragShader, fragCode);
gl.compileShader(fragShader);
createProgram();
attachShader(Object program, Object shader);
Program ? 通過(guò)創(chuàng)建空的程序?qū)ο笞鳛橐粋€(gè)參數(shù)
Shader ? 傳遞的著色器編譯程序中的一個(gè)(頂點(diǎn)著色器,片段著色器)
linkProgram(shaderProgram);
useProgram(shaderProgram);
var shaderProgram = gl.createProgram(); gl.attachShader(shaderProgram, vertShader); gl.attachShader(shaderProgram, fragShader); gl.linkProgram(shaderProgram); gl.useProgram(shaderProgram);