forked from jeromeetienne/threex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
THREEx.glCapability.js
52 lines (46 loc) · 1.54 KB
/
THREEx.glCapability.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
* Define namespace
*/
if(typeof THREEx === "undefined") var THREEx = {};
/**
* return the capability of a WebGl context
*
* TODO to rewrite
* - heavily wased on webglreport on sourceforge
* - is there other/better properties
* - should i get a more readable output ?
* - another function ?
*
* @param {WebGLRenderingContext} webgl context
* @returns {Object} capabilities
*/
THREEx.glCapability = function(gl)
{
// sanity check - gl context MUST BE WebGLRenderingContext
console.assert(gl instanceof WebGLRenderingContext)
// TODO find better names
var prout = ['VERSION', 'SHADING_LANGUAGE_VERSION', 'VENDOR', 'RENDERER'];
var pixDepth = ['RED_BITS', 'GREEN_BITS', 'BLUE_BITS', 'ALPHA_BITS', 'DEPTH_BITS', 'STENCIL_BITS'];
var slota = ['MAX_RENDERBUFFER_SIZE', 'MAX_COMBINED_TEXTURE_IMAGE_UNITS', 'MAX_CUBE_MAP_TEXTURE_SIZE'
, 'MAX_FRAGMENT_UNIFORM_VECTORS', 'MAX_TEXTURE_IMAGE_UNITS'
, 'MAX_TEXTURE_SIZE', 'MAX_VERTEX_ATTRIBS'
, 'MAX_VERTEX_ATTRIBS', 'MAX_VERTEX_TEXTURE_IMAGE_UNITS'
, 'MAX_VERTEX_UNIFORM_VECTORS'];
var sloti = ['ALIASED_LINE_WIDTH_RANGE', 'ALIASED_POINT_SIZE_RANGE', 'MAX_VIEWPORT_DIMS'];
var info = {};
var collect = function(arr){
arr.forEach(function(parameter){
//console.log('parameter', parameter)
info[parameter] = gl.getParameter(gl[parameter])
})
}
collect(prout);
collect(pixDepth);
collect(slota);
collect(sloti)
// special case to get the extensions
info['SUPPORTED_EXTENSIONS'] = gl.getSupportedExtensions()
//console.log("info");
//console.dir(info)
return info;
}