1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/canvas/test/webgl-conformance/conformance/rendering/gl-drawelements.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,98 @@ 1.4 +<!-- 1.5 +Copyright (c) 2011 The Chromium Authors. All rights reserved. 1.6 +Use of this source code is governed by a BSD-style license that can be 1.7 +found in the LICENSE file. 1.8 +--> 1.9 +<!DOCTYPE html> 1.10 +<html> 1.11 + <head> 1.12 +<meta charset="utf-8"> 1.13 + <title>WebGL drawElements Test</title> 1.14 + <link rel="stylesheet" href="../../resources/js-test-style.css"/> 1.15 + <script src="../../resources/js-test-pre.js"></script> 1.16 + <script src="../resources/webgl-test.js"> </script> 1.17 + <script src="../../resources/desktop-gl-constants.js" type="text/javascript"></script> 1.18 +</head> 1.19 +<body> 1.20 +<canvas id="example" width="50" height="50"></canvas> 1.21 +<div id="description"></div> 1.22 +<div id="console"></div> 1.23 + <script id="vshader" type="x-shader/x-vertex"> 1.24 + attribute vec4 vPosition; 1.25 + void main() 1.26 + { 1.27 + gl_Position = vPosition; 1.28 + } 1.29 + </script> 1.30 + 1.31 + <script id="fshader" type="x-shader/x-fragment"> 1.32 + void main() 1.33 + { 1.34 + gl_FragColor = vec4(1.0,0.0,0.0,1.0); 1.35 + } 1.36 + </script> 1.37 + 1.38 + <script> 1.39 + function init() 1.40 + { 1.41 + if (window.initNonKhronosFramework) { 1.42 + window.initNonKhronosFramework(false); 1.43 + } 1.44 + 1.45 + description(document.title); 1.46 + 1.47 + function checkDrawElements(mode, count, type, expect, msg) { 1.48 + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 1.49 + gl.drawElements(mode, count, type, 0); 1.50 + glErrorShouldBe(gl, expect, msg); 1.51 + } 1.52 + 1.53 + gl = initWebGL("example", "vshader", "fshader", [ "vPosition"], [ 0, 0, 0, 1 ], 1); 1.54 + 1.55 + var vertexObject = gl.createBuffer(); 1.56 + gl.bindBuffer(gl.ARRAY_BUFFER, vertexObject); 1.57 + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ 0,0.5,0, -0.5,-0.5,0, 0.5,-0.5,0 ]), gl.STATIC_DRAW); 1.58 + gl.enableVertexAttribArray(0); 1.59 + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0); 1.60 + 1.61 + var vertexObject = gl.createBuffer(); 1.62 + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, vertexObject); 1.63 + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([ 0, 1, 2]), gl.STATIC_DRAW); 1.64 + 1.65 + checkDrawElements(gl.TRIANGLES, 3, gl.UNSIGNED_SHORT, 1.66 + gl.NO_ERROR, "can call gl.DrawElements with UNSIGNED_SHORT"); 1.67 + 1.68 + var vertexObject = gl.createBuffer(); 1.69 + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, vertexObject); 1.70 + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint8Array([ 0, 1, 2, 0]), gl.STATIC_DRAW); 1.71 + 1.72 + checkDrawElements( 1.73 + gl.TRIANGLES, 3, gl.UNSIGNED_BYTE, 1.74 + gl.NO_ERROR, "can call gl.DrawElements with UNSIGNED_BYTE"); 1.75 + checkDrawElements( 1.76 + desktopGL['QUAD_STRIP'], 4, gl.UNSIGNED_BYTE, 1.77 + gl.INVALID_ENUM, "gl.DrawElements with QUAD_STRIP should return INVALID_ENUM"); 1.78 + checkDrawElements( 1.79 + desktopGL['QUADS'], 4, gl.UNSIGNED_BYTE, 1.80 + gl.INVALID_ENUM, "gl.DrawElements with QUADS should return INVALID_ENUM"); 1.81 + checkDrawElements( 1.82 + desktopGL['POLYGON'], 4, gl.UNSIGNED_BYTE, 1.83 + gl.INVALID_ENUM, "gl.DrawElements with POLYGON should return INVALID_ENUM"); 1.84 + 1.85 + var vertexObject = gl.createBuffer(); 1.86 + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, vertexObject); 1.87 + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint32Array([ 0, 1, 2]), gl.STATIC_DRAW); 1.88 + 1.89 + checkDrawElements( 1.90 + gl.TRIANGLES, 3, gl.UNSIGNED_INT, 1.91 + gl.INVALID_ENUM, "gl.DrawElements should return INVALID_ENUM with UNSIGNED_INT"); 1.92 + 1.93 + } 1.94 + 1.95 + init(); 1.96 + successfullyParsed = true; 1.97 + </script> 1.98 +<script>finishTest();</script> 1.99 + 1.100 +</body> 1.101 +</html>