4 ** Copyright (c) 2012 The Khronos Group Inc.
6 ** Permission is hereby granted, free of charge, to any person obtaining a
7 ** copy of this software and/or associated documentation files (the
8 ** "Materials"), to deal in the Materials without restriction, including
9 ** without limitation the rights to use, copy, modify, merge, publish,
10 ** distribute, sublicense, and/or sell copies of the Materials, and to
11 ** permit persons to whom the Materials are furnished to do so, subject to
12 ** the following conditions:
14 ** The above copyright notice and this permission notice shall be included
15 ** in all copies or substantial portions of the Materials.
17 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
31 <meta charset="utf-8">
32 <title>WebGL Information</title>
33 <script src="../../demos/common/webgl-utils.js"> </script>
34 <script src="../conformance/resources/webgl-test-utils.js"> </script>
39 function createCell(txt) {
40 var str = txt.toString();
41 if (typeof txt != 'string') {
42 if (txt.length !== undefined) {
44 for (var ii = 0; ii < txt.length; ++ii) {
45 str += (ii == 0 ? "" : ", ") + txt[ii];
49 var t = document.createTextNode(str);
50 var d = document.createElement("div");
51 var td = document.createElement("td");
57 function createRow(values) {
58 var tr = document.createElement("tr");
59 for (var i = 0; i < values.length; ++i) {
60 var td = createCell(values[i]);
67 var canvas = document.getElementById("example");
68 var gl = WebGLUtils.setupWebGL(canvas);
69 var wtu = WebGLTestUtils;
78 'MAX_COMBINED_TEXTURE_IMAGE_UNITS',
79 'MAX_CUBE_MAP_TEXTURE_SIZE',
80 'MAX_FRAGMENT_UNIFORM_VECTORS',
81 'MAX_RENDERBUFFER_SIZE',
82 'MAX_TEXTURE_IMAGE_UNITS',
84 'MAX_VARYING_VECTORS',
86 'MAX_VERTEX_TEXTURE_IMAGE_UNITS',
87 'MAX_VERTEX_UNIFORM_VECTORS',
91 var table = document.createElement("table");
92 var tb = document.createElement("tbody");
93 for (var ii = 0; ii < pnames.length; ++ii) {
94 var pname = pnames[ii];
95 var value = gl.getParameter(gl[pname]);
96 tb.appendChild(createRow([pname, value]));
98 var debugExt = gl.getExtension('WEBGL_debug_renderer_info');
101 'UNMASKED_VENDOR_WEBGL',
102 'UNMASKED_RENDERER_WEBGL'
104 for (var ii = 0; ii < extPnames.length; ++ii) {
105 var pname = extPnames[ii];
106 var value = gl.getParameter(debugExt[pname]);
107 tb.appendChild(createRow([pname, value]));
110 table.appendChild(tb);
111 document.getElementById("info").appendChild(table);
112 var extensionList = document.createElement('ul');
113 var exts = gl.getSupportedExtensions();
114 var extsWithPrefixes = [];
115 while (exts.length > 0) {
116 var prefixedNames = wtu.getExtensionPrefixedNames(exts[0]);
117 var supportedPrefixedNames = [];
118 for (var ii = 0; ii < prefixedNames.length; ++ii) {
119 var index = exts.indexOf(prefixedNames[ii]);
121 supportedPrefixedNames.push(exts[index]);
122 exts.splice(index, 1);
125 extsWithPrefixes.push(supportedPrefixedNames.join(" / "));
127 extsWithPrefixes.sort();
128 for (var ii = 0; ii < extsWithPrefixes.length; ++ii) {
129 var li = document.createElement('li');
130 li.appendChild(document.createTextNode(extsWithPrefixes[ii]));
131 extensionList.appendChild(li);
133 document.getElementById('extensions').appendChild(extensionList);
139 <div id="info"></div>
140 <h2>WebGL Extensions</h2>
141 <div id="extensions"></div>
142 <canvas id="example" width="256" height="16" style="width: 256px; height: 48px;"></canvas>