<script id="shader-vs" type="x-shader/x-vertex"> attribute vec3 aVertexPosition;
Uniform mat4 uMVMatrix: uniform mat4 uPMatrix;
Void main(void) {
Gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); }
</script>
<script id="shader-fs" type="x-shader/x-fragment"> void main(void) {
Gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}
</script>
Function getShader(gl, id) { var shader:
Var shaderScript = document. getElementByld(id); var str = ””;
Var k = shaderScript. firstChild; while (k) {
If (k. nodeType == 3) { str += k. textContent;
}
K = k. nextSibling;
}
If (shaderScript. type == ”x-shader/x-fragment”) { shader = gl. createShader(gl. FRAGMENT_SHADER);
} else if (shaderScript. type == ”x-shader/x-vertex”) { shader = gl. createShader(gl. VERTEX_SHADER);
}
Gl. shaderSource(shader, str): gl. compileShader(shader): return shader:
}
Var fragmentShader = getShader(gl, "shader-fs"); var vertexShader = getShader(gl, "shader-vs");
ShaderProgram = gl. createProgram(); gl. attachShader(shaderProgram, vertexShader); gl. attachShader(shaderProgram, fragmentShader); gl. linkProgram(shaderProgram); gl. useProgram(shaderProgram);
ShaderProgram. vertexPositionAttribute = gl. getAttribLocation(shaderProgram, "aVertexPosition");
Gl. enableVertexAttribArray(shaderProgram. vertexPositionAttribute);
ShaderProgram. pMatrixUniform = gl. getUniformLocation(shaderProgram, "uPMatrix"); shaderProgram. mvMatrixUniform = gl. getUniformLocation(shaderProgram, "uMVMatrix");
Var myColorBuffer = gl. createBuffer(); gl. bindBuffer(gl. ARRAY_BUFFER, myColorBuffer); var colors = [
1
0,
0.0,
0.0,
1.0,
1
0,
1.0,
0.0,
1.0,
0
0,
1.0,
1.0,
1.0,
1
0,
0.0,
1.0,
1.0,
1
0,
1.0,
0.0,
1.0,
0
0,
1.0,
1.0,
1.0,
1
0,
1.0,
0.0,
1.0,
0
0,
1.0,
1.0,
1.0
];
Gl. bufferData(gl. ARRAY_BUFFER, new Float32Array(colors), gl. STATIC_DRAW); tmyColorBuffer. itemSize = 4; myColorBuffer. numItems = 8;
<script id="shader-vs" type="x-shader/x-vertex"> attribute vec3 aVertexPosition; attribute vec4 aVertexColor;
Uniform mat4 uMVMatrix; uniform mat4 uPMatrix: varying vec4 vColor;
Void main(void) {
Gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); vColor = aVertexColor;
}
</script>
<script id=”shader-fs” type=”x-shader/x-fragment”> precision mediump float:
#ifdef GL_ES precision highp float:
#endif
Varying vec4 vColor: void main(void) {
Gl_FragColor = vColor;
}
</script>
Gl. enable(gl. DEPTH_TEST); draw(myShapeBuffer, myColorBuffer):
Function draw(varBuffer, colorBufer) {
BindBuffer(gl. ARRAY_BUFFER, varBuffer);
VertexAttribPointer(shaderProgram. vertexPositionAttribute, varBuffer. itemSize, FLOAT, false, 0, 0); bindBuffer(gl. ARRAY_BUFFER, colorBufer);
VertexAttribPointer(shaderProgram. vertexColorAttribute, colorBufer. itemSize, FLOAT, false, 0, 0);
Социальные закладки