OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 // |
| 5 // READ BEFORE UPDATING: |
| 6 // If this file is updated, make sure to increment the "revision" value of any |
| 7 // tests that use this file in content/test/gpu/page_sets/pixel_tests.py. This |
| 8 // will ensure that the baseline images are regenerated on the next run. |
| 9 |
| 10 var vertexShader = [ |
| 11 "attribute vec3 pos;", |
| 12 "void main(void)", |
| 13 "{", |
| 14 " gl_Position = vec4(pos, 1.0);", |
| 15 "}" |
| 16 ].join("\n"); |
| 17 |
| 18 var fragmentShader = [ |
| 19 "precision mediump float;", |
| 20 "void main(void)", |
| 21 "{", |
| 22 " gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);", |
| 23 "}" |
| 24 ].join("\n"); |
| 25 |
| 26 function initGL(canvas) |
| 27 { |
| 28 var gl = null; |
| 29 try { |
| 30 gl = canvas.getContext("experimental-webgl"); |
| 31 } catch (e) {} |
| 32 if (!gl) { |
| 33 try { |
| 34 gl = canvas.getContext("webgl"); |
| 35 } catch (e) { } |
| 36 } |
| 37 return gl; |
| 38 } |
| 39 |
| 40 function setupShader(gl, source, type) { |
| 41 var shader = gl.createShader(type); |
| 42 gl.shaderSource(shader, source); |
| 43 gl.compileShader(shader); |
| 44 if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) |
| 45 return null; |
| 46 return shader; |
| 47 } |
| 48 |
| 49 function setupProgram(gl, vs_id, fs_id) { |
| 50 var vs = setupShader(gl, vertexShader, gl.VERTEX_SHADER); |
| 51 var fs = setupShader(gl, fragmentShader, gl.FRAGMENT_SHADER); |
| 52 if (!vs || !fs) |
| 53 return null; |
| 54 var program = gl.createProgram(); |
| 55 gl.attachShader(program, vs); |
| 56 gl.attachShader(program, fs); |
| 57 gl.linkProgram(program); |
| 58 if (!gl.getProgramParameter(program, gl.LINK_STATUS)) |
| 59 return null; |
| 60 gl.useProgram(program); |
| 61 return program; |
| 62 } |
| 63 |
| 64 function setupBuffer(gl) { |
| 65 var buffer = gl.createBuffer(); |
| 66 gl.bindBuffer(gl.ARRAY_BUFFER, buffer); |
| 67 var vertexData = [ |
| 68 0.0, 0.6, 0.0, // Vertex 1 position |
| 69 -0.6, -0.6, 0.0, // Vertex 2 position |
| 70 0.6, -0.6, 0.0, // Vertex 3 position |
| 71 ]; |
| 72 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertexData), gl.STATIC_DRAW); |
| 73 } |
| 74 |
| 75 function setup(gl) { |
| 76 var program = setupProgram(gl, "shader-vs", "shader-fs"); |
| 77 if (!program) |
| 78 return false; |
| 79 var posAttr = gl.getAttribLocation(program, "pos"); |
| 80 gl.enableVertexAttribArray(posAttr); |
| 81 setupBuffer(gl); |
| 82 var stride = 3 * Float32Array.BYTES_PER_ELEMENT; |
| 83 gl.vertexAttribPointer(posAttr, 3, gl.FLOAT, false, stride, 0); |
| 84 gl.clearColor(0.0, 0.0, 0.0, 0.0); |
| 85 gl.viewport(0, 0, 200, 200); |
| 86 gl.disable(gl.DEPTH_TEST); |
| 87 if (gl.getError() != gl.NO_ERROR) |
| 88 return false; |
| 89 return true; |
| 90 } |
| 91 |
| 92 function drawTriangle(gl) { |
| 93 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); |
| 94 gl.drawArrays(gl.TRIANGLES, 0, 3); |
| 95 } |
OLD | NEW |