4 <title>WebGL Test: Green Triangle over Black Background
</title>
5 <style type=
"text/css">
11 <script id=
"shader-vs" type=
"x-shader/x-vertex">
15 gl_Position = vec4(pos,
1.0);
19 <script id=
"shader-fs" type=
"x-shader/x-fragment">
20 precision mediump float;
23 gl_FragColor = vec4(
0.0,
1.0,
0.0,
1.0);
28 var g_swapsBeforeAck
= 15;
33 var canvas
= document
.getElementById("c");
35 if (gl
&& setup(gl
)) {
38 domAutomationController
.setAutomationId(1);
39 domAutomationController
.send("FAILURE");
43 function drawSomeFrames()
45 if (g_swapsBeforeAck
== 0) {
46 domAutomationController
.setAutomationId(1);
47 domAutomationController
.send("SUCCESS");
51 window
.webkitRequestAnimationFrame(drawSomeFrames
);
55 function initGL(canvas
)
59 gl
= canvas
.getContext("experimental-webgl");
63 gl
= canvas
.getContext("webgl");
69 function setupShader(gl
, source
, type
) {
70 var shader
= gl
.createShader(type
);
71 gl
.shaderSource(shader
, source
);
72 gl
.compileShader(shader
);
73 if (!gl
.getShaderParameter(shader
, gl
.COMPILE_STATUS
))
78 function setupProgram(gl
, vs_id
, fs_id
) {
79 var vs_node
= document
.getElementById(vs_id
);
80 var fs_node
= document
.getElementById(fs_id
);
81 if (!vs_node
|| !fs_node
)
83 var vs
= setupShader(gl
, vs_node
.text
, gl
.VERTEX_SHADER
);
84 var fs
= setupShader(gl
, fs_node
.text
, gl
.FRAGMENT_SHADER
);
87 var program
= gl
.createProgram();
88 gl
.attachShader(program
, vs
);
89 gl
.attachShader(program
, fs
);
90 gl
.linkProgram(program
);
91 if (!gl
.getProgramParameter(program
, gl
.LINK_STATUS
))
93 gl
.useProgram(program
);
97 function setupBuffer(gl
) {
98 var buffer
= gl
.createBuffer();
99 gl
.bindBuffer(gl
.ARRAY_BUFFER
, buffer
);
101 0.0, 0.6, 0.0, // Vertex 1 position
102 -0.6, -0.6, 0.0, // Vertex 2 position
103 0.6, -0.6, 0.0, // Vertex 3 position
105 gl
.bufferData(gl
.ARRAY_BUFFER
, new Float32Array(vertexData
), gl
.STATIC_DRAW
);
109 var program
= setupProgram(gl
, "shader-vs", "shader-fs");
112 var posAttr
= gl
.getAttribLocation(program
, "pos");
113 gl
.enableVertexAttribArray(posAttr
);
115 var stride
= 3 * Float32Array
.BYTES_PER_ELEMENT
;
116 gl
.vertexAttribPointer(posAttr
, 3, gl
.FLOAT
, false, stride
, 0);
117 gl
.clearColor(0.0, 0.0, 0.0, 0.0);
118 gl
.viewport(0, 0, 200, 200);
119 gl
.disable(gl
.DEPTH_TEST
);
120 if (gl
.getError() != gl
.NO_ERROR
)
126 gl
.clear(gl
.COLOR_BUFFER_BIT
| gl
.DEPTH_BUFFER_BIT
);
127 gl
.drawArrays(gl
.TRIANGLES
, 0, 3);
131 <body onload=
"main()">
132 <div style=
"position:relative; width:200px; height:200px; background-color:black"></div>
133 <div style=
"position:absolute; top:0px; left:0px">
134 <canvas id=
"c" width=
"200" height=
"200" class=
"nomargin"></canvas>