Спойлер Не троллинга ради! Образования для!:
<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);