2 Copyright (c) 2019 The Khronos Group Inc.
3 Use of this source code is governed by an MIT-style license that can be
4 found in the LICENSE.txt file.
10 <!-- This is a visual test that programs must have both a vertex and
11 fragment shader attached; the fixed function pipeline on the
12 desktop must remain disabled. -->
13 <script type=
"application/javascript">
16 for (var i =
0; i < arguments.length; ++i) {
17 s += arguments[i] +
" ";
19 document.getElementById(
"log").innerHTML += s +
"<br>";
23 var gl = document.getElementById(
"c").getContext(
"experimental-webgl");
25 gl.clearColor(
0.0,
0.0,
0.0,
0.0);
26 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
28 var vs = gl.createShader(gl.VERTEX_SHADER);
29 gl.shaderSource(vs,
"attribute vec4 aVertex; attribute vec4 aColor; varying vec4 vColor; void main() { vColor = aColor; gl_Position = aVertex; }");
32 var fs = gl.createShader(gl.FRAGMENT_SHADER);
33 gl.shaderSource(fs,
"precision mediump float; varying vec4 vColor; void main() { gl_FragColor = vColor; }");
36 var prog = gl.createProgram();
37 gl.attachShader(prog, vs);
38 // don't attach a fragment shader -- may use fixed pipeline on desktop if the implementation doesn't check!
39 //gl.attachShader(prog, fs);
41 gl.bindAttribLocation(prog,
0,
"aVertex");
42 gl.bindAttribLocation(prog,
1,
"aColor");
46 var vbuf = gl.createBuffer();
47 gl.bindBuffer(gl.ARRAY_BUFFER, vbuf);
48 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
52 1.0,
1.0,
0.0,
1.0]), gl.STATIC_DRAW);
53 gl.vertexAttribPointer(
0,
4, gl.FLOAT, false,
0,
0);
55 var cbuf = gl.createBuffer();
56 gl.bindBuffer(gl.ARRAY_BUFFER, cbuf);
57 gl.bufferData(gl.ARRAY_BUFFER, new Uint8Array([
255,
0,
0,
60 255,
255,
0]), gl.STATIC_DRAW);
61 gl.vertexAttribPointer(
1,
3, gl.UNSIGNED_BYTE, false,
0,
0);
63 gl.enableVertexAttribArray(
0);
64 gl.enableVertexAttribArray(
1);
68 gl.drawArrays(gl.TRIANGLE_STRIP,
0,
4);
70 log(
"glError",
"0x" + gl.getError().toString(
16));
76 <p>Should be green in the rectangle below:
</p>
77 <canvas style=
"background: green;" id=
"c"></canvas>