mockWebGL.ts 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. /**
  2. * This webGL Support shim will allow running tests using the normal engine in chrome headless.
  3. */
  4. //Tests should be in the same condition no matter what environment they are running in.
  5. //!(<any>window).WebGLRenderingContext){
  6. export default function webglSupport() {
  7. //mock webgl support
  8. (<any>HTMLCanvasElement.prototype)._getContext = HTMLCanvasElement.prototype.getContext;
  9. HTMLCanvasElement.prototype.getContext = function(ctxName, options) {
  10. //patch in mock webgl
  11. switch (ctxName) {
  12. case 'webgl':
  13. case 'experimental-webgl':
  14. var ctx = new (<any>window).WebGLRenderingContext();
  15. // tslint:disable-next-line:no-invalid-this
  16. ctx.canvas = this;
  17. // tslint:disable-next-line:no-invalid-this
  18. ctx.drawingBufferWidth = this.clientWidth;
  19. // tslint:disable-next-line:no-invalid-this
  20. ctx.drawingBufferHeight = this.clientHeight;
  21. return (<any>ctx);
  22. }
  23. //pass through to default behavior
  24. // tslint:disable-next-line:no-invalid-this
  25. return this._getContext.apply(this, arguments);
  26. };
  27. //define WebGLRenderingContext
  28. (<any>window).WebGLRenderingContext = () => { };
  29. (<any>window).WebGLRenderingContext.prototype = {
  30. /* ClearBufferMask */
  31. DEPTH_BUFFER_BIT: 0x00000100,
  32. STENCIL_BUFFER_BIT: 0x00000400,
  33. COLOR_BUFFER_BIT: 0x00004000,
  34. /* BeginMode */
  35. POINTS: 0x0000,
  36. LINES: 0x0001,
  37. LINE_LOOP: 0x0002,
  38. LINE_STRIP: 0x0003,
  39. TRIANGLES: 0x0004,
  40. TRIANGLE_STRIP: 0x0005,
  41. TRIANGLE_FAN: 0x0006,
  42. /* AlphaFunction (not supported in ES20) */
  43. /* NEVER */
  44. /* LESS */
  45. /* EQUAL */
  46. /* LEQUAL */
  47. /* GREATER */
  48. /* NOTEQUAL */
  49. /* GEQUAL */
  50. /* ALWAYS */
  51. /* BlendingFactorDest */
  52. ZERO: 0,
  53. ONE: 1,
  54. SRC_COLOR: 0x0300,
  55. ONE_MINUS_SRC_COLOR: 0x0301,
  56. SRC_ALPHA: 0x0302,
  57. ONE_MINUS_SRC_ALPHA: 0x0303,
  58. DST_ALPHA: 0x0304,
  59. ONE_MINUS_DST_ALPHA: 0x0305,
  60. /* BlendingFactorSrc */
  61. /* ZERO */
  62. /* ONE */
  63. DST_COLOR: 0x0306,
  64. ONE_MINUS_DST_COLOR: 0x0307,
  65. SRC_ALPHA_SATURATE: 0x0308,
  66. /* SRC_ALPHA */
  67. /* ONE_MINUS_SRC_ALPHA */
  68. /* DST_ALPHA */
  69. /* ONE_MINUS_DST_ALPHA */
  70. /* BlendEquationSeparate */
  71. FUNC_ADD: 0x8006,
  72. BLEND_EQUATION: 0x8009,
  73. BLEND_EQUATION_RGB: 0x8009, /* same as BLEND_EQUATION */
  74. BLEND_EQUATION_ALPHA: 0x883D,
  75. /* BlendSubtract */
  76. FUNC_SUBTRACT: 0x800A,
  77. FUNC_REVERSE_SUBTRACT: 0x800B,
  78. /* Separate Blend Functions */
  79. BLEND_DST_RGB: 0x80C8,
  80. BLEND_SRC_RGB: 0x80C9,
  81. BLEND_DST_ALPHA: 0x80CA,
  82. BLEND_SRC_ALPHA: 0x80CB,
  83. CONSTANT_COLOR: 0x8001,
  84. ONE_MINUS_CONSTANT_COLOR: 0x8002,
  85. CONSTANT_ALPHA: 0x8003,
  86. ONE_MINUS_CONSTANT_ALPHA: 0x8004,
  87. BLEND_COLOR: 0x8005,
  88. /* Buffer Objects */
  89. ARRAY_BUFFER: 0x8892,
  90. ELEMENT_ARRAY_BUFFER: 0x8893,
  91. ARRAY_BUFFER_BINDING: 0x8894,
  92. ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,
  93. STREAM_DRAW: 0x88E0,
  94. STATIC_DRAW: 0x88E4,
  95. DYNAMIC_DRAW: 0x88E8,
  96. BUFFER_SIZE: 0x8764,
  97. BUFFER_USAGE: 0x8765,
  98. CURRENT_VERTEX_ATTRIB: 0x8626,
  99. /* CullFaceMode */
  100. FRONT: 0x0404,
  101. BACK: 0x0405,
  102. FRONT_AND_BACK: 0x0408,
  103. /* DepthFunction */
  104. /* NEVER */
  105. /* LESS */
  106. /* EQUAL */
  107. /* LEQUAL */
  108. /* GREATER */
  109. /* NOTEQUAL */
  110. /* GEQUAL */
  111. /* ALWAYS */
  112. /* EnableCap */
  113. /* TEXTURE_2D */
  114. CULL_FACE: 0x0B44,
  115. BLEND: 0x0BE2,
  116. DITHER: 0x0BD0,
  117. STENCIL_TEST: 0x0B90,
  118. DEPTH_TEST: 0x0B71,
  119. SCISSOR_TEST: 0x0C11,
  120. POLYGON_OFFSET_FILL: 0x8037,
  121. SAMPLE_ALPHA_TO_COVERAGE: 0x809E,
  122. SAMPLE_COVERAGE: 0x80A0,
  123. /* ErrorCode */
  124. NO_ERROR: 0,
  125. INVALID_ENUM: 0x0500,
  126. INVALID_VALUE: 0x0501,
  127. INVALID_OPERATION: 0x0502,
  128. OUT_OF_MEMORY: 0x0505,
  129. /* FrontFaceDirection */
  130. CW: 0x0900,
  131. CCW: 0x0901,
  132. /* GetPName */
  133. LINE_WIDTH: 0x0B21,
  134. ALIASED_POINT_SIZE_RANGE: 0x846D,
  135. ALIASED_LINE_WIDTH_RANGE: 0x846E,
  136. CULL_FACE_MODE: 0x0B45,
  137. FRONT_FACE: 0x0B46,
  138. DEPTH_RANGE: 0x0B70,
  139. DEPTH_WRITEMASK: 0x0B72,
  140. DEPTH_CLEAR_VALUE: 0x0B73,
  141. DEPTH_FUNC: 0x0B74,
  142. STENCIL_CLEAR_VALUE: 0x0B91,
  143. STENCIL_FUNC: 0x0B92,
  144. STENCIL_FAIL: 0x0B94,
  145. STENCIL_PASS_DEPTH_FAIL: 0x0B95,
  146. STENCIL_PASS_DEPTH_PASS: 0x0B96,
  147. STENCIL_REF: 0x0B97,
  148. STENCIL_VALUE_MASK: 0x0B93,
  149. STENCIL_WRITEMASK: 0x0B98,
  150. STENCIL_BACK_FUNC: 0x8800,
  151. STENCIL_BACK_FAIL: 0x8801,
  152. STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,
  153. STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,
  154. STENCIL_BACK_REF: 0x8CA3,
  155. STENCIL_BACK_VALUE_MASK: 0x8CA4,
  156. STENCIL_BACK_WRITEMASK: 0x8CA5,
  157. VIEWPORT: 0x0BA2,
  158. SCISSOR_BOX: 0x0C10,
  159. /* SCISSOR_TEST */
  160. COLOR_CLEAR_VALUE: 0x0C22,
  161. COLOR_WRITEMASK: 0x0C23,
  162. UNPACK_ALIGNMENT: 0x0CF5,
  163. PACK_ALIGNMENT: 0x0D05,
  164. MAX_TEXTURE_SIZE: 0x0D33,
  165. MAX_VIEWPORT_DIMS: 0x0D3A,
  166. SUBPIXEL_BITS: 0x0D50,
  167. RED_BITS: 0x0D52,
  168. GREEN_BITS: 0x0D53,
  169. BLUE_BITS: 0x0D54,
  170. ALPHA_BITS: 0x0D55,
  171. DEPTH_BITS: 0x0D56,
  172. STENCIL_BITS: 0x0D57,
  173. POLYGON_OFFSET_UNITS: 0x2A00,
  174. /* POLYGON_OFFSET_FILL */
  175. POLYGON_OFFSET_FACTOR: 0x8038,
  176. TEXTURE_BINDING_2D: 0x8069,
  177. SAMPLE_BUFFERS: 0x80A8,
  178. SAMPLES: 0x80A9,
  179. SAMPLE_COVERAGE_VALUE: 0x80AA,
  180. SAMPLE_COVERAGE_INVERT: 0x80AB,
  181. /* GetTextureParameter */
  182. /* TEXTURE_MAG_FILTER */
  183. /* TEXTURE_MIN_FILTER */
  184. /* TEXTURE_WRAP_S */
  185. /* TEXTURE_WRAP_T */
  186. COMPRESSED_TEXTURE_FORMATS: 0x86A3,
  187. /* HintMode */
  188. DONT_CARE: 0x1100,
  189. FASTEST: 0x1101,
  190. NICEST: 0x1102,
  191. /* HintTarget */
  192. GENERATE_MIPMAP_HINT: 0x8192,
  193. /* DataType */
  194. BYTE: 0x1400,
  195. UNSIGNED_BYTE: 0x1401,
  196. SHORT: 0x1402,
  197. UNSIGNED_SHORT: 0x1403,
  198. INT: 0x1404,
  199. UNSIGNED_INT: 0x1405,
  200. FLOAT: 0x1406,
  201. /* PixelFormat */
  202. DEPTH_COMPONENT: 0x1902,
  203. ALPHA: 0x1906,
  204. RGB: 0x1907,
  205. RGBA: 0x1908,
  206. LUMINANCE: 0x1909,
  207. LUMINANCE_ALPHA: 0x190A,
  208. /* PixelType */
  209. /* UNSIGNED_BYTE */
  210. UNSIGNED_SHORT_4_4_4_4: 0x8033,
  211. UNSIGNED_SHORT_5_5_5_1: 0x8034,
  212. UNSIGNED_SHORT_5_6_5: 0x8363,
  213. /* Shaders */
  214. FRAGMENT_SHADER: 0x8B30,
  215. VERTEX_SHADER: 0x8B31,
  216. MAX_VERTEX_ATTRIBS: 0x8869,
  217. MAX_VERTEX_UNIFORM_VECTORS: 0x8DFB,
  218. MAX_VARYING_VECTORS: 0x8DFC,
  219. MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8B4D,
  220. MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8B4C,
  221. MAX_TEXTURE_IMAGE_UNITS: 0x8872,
  222. MAX_FRAGMENT_UNIFORM_VECTORS: 0x8DFD,
  223. SHADER_TYPE: 0x8B4F,
  224. DELETE_STATUS: 0x8B80,
  225. LINK_STATUS: 0x8B82,
  226. VALIDATE_STATUS: 0x8B83,
  227. ATTACHED_SHADERS: 0x8B85,
  228. ACTIVE_UNIFORMS: 0x8B86,
  229. ACTIVE_ATTRIBUTES: 0x8B89,
  230. SHADING_LANGUAGE_VERSION: 0x8B8C,
  231. CURRENT_PROGRAM: 0x8B8D,
  232. /* StencilFunction */
  233. NEVER: 0x0200,
  234. LESS: 0x0201,
  235. EQUAL: 0x0202,
  236. LEQUAL: 0x0203,
  237. GREATER: 0x0204,
  238. NOTEQUAL: 0x0205,
  239. GEQUAL: 0x0206,
  240. ALWAYS: 0x0207,
  241. /* StencilOp */
  242. /* ZERO */
  243. KEEP: 0x1E00,
  244. REPLACE: 0x1E01,
  245. INCR: 0x1E02,
  246. DECR: 0x1E03,
  247. INVERT: 0x150A,
  248. INCR_WRAP: 0x8507,
  249. DECR_WRAP: 0x8508,
  250. /* StringName */
  251. VENDOR: 0x1F00,
  252. RENDERER: 0x1F01,
  253. VERSION: 0x1F02,
  254. /* TextureMagFilter */
  255. NEAREST: 0x2600,
  256. LINEAR: 0x2601,
  257. /* TextureMinFilter */
  258. /* NEAREST */
  259. /* LINEAR */
  260. NEAREST_MIPMAP_NEAREST: 0x2700,
  261. LINEAR_MIPMAP_NEAREST: 0x2701,
  262. NEAREST_MIPMAP_LINEAR: 0x2702,
  263. LINEAR_MIPMAP_LINEAR: 0x2703,
  264. /* TextureParameterName */
  265. TEXTURE_MAG_FILTER: 0x2800,
  266. TEXTURE_MIN_FILTER: 0x2801,
  267. TEXTURE_WRAP_S: 0x2802,
  268. TEXTURE_WRAP_T: 0x2803,
  269. /* TextureTarget */
  270. TEXTURE_2D: 0x0DE1,
  271. TEXTURE: 0x1702,
  272. TEXTURE_CUBE_MAP: 0x8513,
  273. TEXTURE_BINDING_CUBE_MAP: 0x8514,
  274. TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,
  275. TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,
  276. TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,
  277. TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,
  278. TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,
  279. TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851A,
  280. MAX_CUBE_MAP_TEXTURE_SIZE: 0x851C,
  281. /* TextureUnit */
  282. TEXTURE0: 0x84C0,
  283. TEXTURE1: 0x84C1,
  284. TEXTURE2: 0x84C2,
  285. TEXTURE3: 0x84C3,
  286. TEXTURE4: 0x84C4,
  287. TEXTURE5: 0x84C5,
  288. TEXTURE6: 0x84C6,
  289. TEXTURE7: 0x84C7,
  290. TEXTURE8: 0x84C8,
  291. TEXTURE9: 0x84C9,
  292. TEXTURE10: 0x84CA,
  293. TEXTURE11: 0x84CB,
  294. TEXTURE12: 0x84CC,
  295. TEXTURE13: 0x84CD,
  296. TEXTURE14: 0x84CE,
  297. TEXTURE15: 0x84CF,
  298. TEXTURE16: 0x84D0,
  299. TEXTURE17: 0x84D1,
  300. TEXTURE18: 0x84D2,
  301. TEXTURE19: 0x84D3,
  302. TEXTURE20: 0x84D4,
  303. TEXTURE21: 0x84D5,
  304. TEXTURE22: 0x84D6,
  305. TEXTURE23: 0x84D7,
  306. TEXTURE24: 0x84D8,
  307. TEXTURE25: 0x84D9,
  308. TEXTURE26: 0x84DA,
  309. TEXTURE27: 0x84DB,
  310. TEXTURE28: 0x84DC,
  311. TEXTURE29: 0x84DD,
  312. TEXTURE30: 0x84DE,
  313. TEXTURE31: 0x84DF,
  314. ACTIVE_TEXTURE: 0x84E0,
  315. /* TextureWrapMode */
  316. REPEAT: 0x2901,
  317. CLAMP_TO_EDGE: 0x812F,
  318. MIRRORED_REPEAT: 0x8370,
  319. /* Uniform Types */
  320. FLOAT_VEC2: 0x8B50,
  321. FLOAT_VEC3: 0x8B51,
  322. FLOAT_VEC4: 0x8B52,
  323. INT_VEC2: 0x8B53,
  324. INT_VEC3: 0x8B54,
  325. INT_VEC4: 0x8B55,
  326. BOOL: 0x8B56,
  327. BOOL_VEC2: 0x8B57,
  328. BOOL_VEC3: 0x8B58,
  329. BOOL_VEC4: 0x8B59,
  330. FLOAT_MAT2: 0x8B5A,
  331. FLOAT_MAT3: 0x8B5B,
  332. FLOAT_MAT4: 0x8B5C,
  333. SAMPLER_2D: 0x8B5E,
  334. SAMPLER_CUBE: 0x8B60,
  335. /* Vertex Arrays */
  336. VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,
  337. VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,
  338. VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,
  339. VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,
  340. VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886A,
  341. VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,
  342. VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889F,
  343. /* Read Format */
  344. IMPLEMENTATION_COLOR_READ_TYPE: 0x8B9A,
  345. IMPLEMENTATION_COLOR_READ_FORMAT: 0x8B9B,
  346. /* Shader Source */
  347. COMPILE_STATUS: 0x8B81,
  348. /* Shader Precision-Specified Types */
  349. LOW_FLOAT: 0x8DF0,
  350. MEDIUM_FLOAT: 0x8DF1,
  351. HIGH_FLOAT: 0x8DF2,
  352. LOW_INT: 0x8DF3,
  353. MEDIUM_INT: 0x8DF4,
  354. HIGH_INT: 0x8DF5,
  355. /* Framebuffer Object. */
  356. FRAMEBUFFER: 0x8D40,
  357. RENDERBUFFER: 0x8D41,
  358. RGBA4: 0x8056,
  359. RGB5_A1: 0x8057,
  360. RGB565: 0x8D62,
  361. DEPTH_COMPONENT16: 0x81A5,
  362. STENCIL_INDEX: 0x1901,
  363. STENCIL_INDEX8: 0x8D48,
  364. DEPTH_STENCIL: 0x84F9,
  365. RENDERBUFFER_WIDTH: 0x8D42,
  366. RENDERBUFFER_HEIGHT: 0x8D43,
  367. RENDERBUFFER_INTERNAL_FORMAT: 0x8D44,
  368. RENDERBUFFER_RED_SIZE: 0x8D50,
  369. RENDERBUFFER_GREEN_SIZE: 0x8D51,
  370. RENDERBUFFER_BLUE_SIZE: 0x8D52,
  371. RENDERBUFFER_ALPHA_SIZE: 0x8D53,
  372. RENDERBUFFER_DEPTH_SIZE: 0x8D54,
  373. RENDERBUFFER_STENCIL_SIZE: 0x8D55,
  374. FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8CD0,
  375. FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8CD1,
  376. FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8CD2,
  377. FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8CD3,
  378. COLOR_ATTACHMENT0: 0x8CE0,
  379. DEPTH_ATTACHMENT: 0x8D00,
  380. STENCIL_ATTACHMENT: 0x8D20,
  381. DEPTH_STENCIL_ATTACHMENT: 0x821A,
  382. NONE: 0,
  383. FRAMEBUFFER_COMPLETE: 0x8CD5,
  384. FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8CD6,
  385. FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8CD7,
  386. FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8CD9,
  387. FRAMEBUFFER_UNSUPPORTED: 0x8CDD,
  388. FRAMEBUFFER_BINDING: 0x8CA6,
  389. RENDERBUFFER_BINDING: 0x8CA7,
  390. MAX_RENDERBUFFER_SIZE: 0x84E8,
  391. INVALID_FRAMEBUFFER_OPERATION: 0x0506,
  392. /* WebGL-specific enums */
  393. UNPACK_FLIP_Y_WEBGL: 0x9240,
  394. UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,
  395. CONTEXT_LOST_WEBGL: 0x9242,
  396. UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,
  397. BROWSER_DEFAULT_WEBGL: 0x9244,
  398. canvas: null,
  399. drawingBufferWidth: 0,
  400. drawingBufferHeight: 0,
  401. getContextAttributes: function() { return {}; },
  402. isContextLost: function() { return {}; },
  403. getSupportedExtensions: function() { return {}; },
  404. getExtension: function(name) { return name === "EXT_texture_filter_anisotropic" ? {} : null; },
  405. activeTexture: function() { return {}; },
  406. attachShader: function() { return {}; },
  407. bindAttribLocation: function() { return {}; },
  408. bindBuffer: function() { return {}; },
  409. bindFramebuffer: function() { return {}; },
  410. bindRenderbuffer: function() { return {}; },
  411. bindTexture: function() { return {}; },
  412. blendColor: function() { return {}; },
  413. blendEquation: function() { return {}; },
  414. blendEquationSeparate: function() { return {}; },
  415. blendFunc: function() { return {}; },
  416. blendFuncSeparate: function() { return {}; },
  417. bufferData: function() { return {}; },
  418. bufferSubData: function() { return {}; },
  419. checkFramebufferStatus: function() { return {}; },
  420. clear: function() { return {}; },
  421. clearColor: function() { return {}; },
  422. clearDepth: function() { return {}; },
  423. clearStencil: function() { return {}; },
  424. colorMask: function() { return {}; },
  425. compileShader: function() { return {}; },
  426. compressedTexImage2D: function() { return {}; },
  427. compressedTexSubImage2D: function() { return {}; },
  428. copyTexImage2D: function() { return {}; },
  429. copyTexSubImage2D: function() { return {}; },
  430. createBuffer: function() { return {}; },
  431. createFramebuffer: function() { return {}; },
  432. createProgram: function() { return {}; },
  433. createRenderbuffer: function() { return {}; },
  434. createShader: function() { return {}; },
  435. createTexture: function() { return {}; },
  436. cullFace: function() { return {}; },
  437. deleteBuffer: function() { return {}; },
  438. deleteFramebuffer: function() { return {}; },
  439. deleteProgram: function() { return {}; },
  440. deleteRenderbuffer: function() { return {}; },
  441. deleteShader: function() { return {}; },
  442. deleteTexture: function() { return {}; },
  443. depthFunc: function() { return {}; },
  444. depthMask: function() { return {}; },
  445. depthRange: function() { return {}; },
  446. detachShader: function() { return {}; },
  447. disable: function() { return {}; },
  448. disableVertexAttribArray: function() { return {}; },
  449. drawArrays: function() { return {}; },
  450. drawElements: function() { return {}; },
  451. enable: function() { return {}; },
  452. enableVertexAttribArray: function() { return {}; },
  453. finish: function() { return {}; },
  454. flush: function() { return {}; },
  455. framebufferRenderbuffer: function() { return {}; },
  456. framebufferTexture2D: function() { return {}; },
  457. frontFace: function() { return {}; },
  458. generateMipmap: function() { return {}; },
  459. getActiveAttrib: function() { return {}; },
  460. getActiveUniform: function() { return {}; },
  461. getAttachedShaders: function() { return {}; },
  462. getAttribLocation: function() { return {}; },
  463. getBufferParameter: function() { return {}; },
  464. getParameter: function() { return 256; },
  465. getError: function() { return 0; },
  466. getFramebufferAttachmentParameter: function() { return {}; },
  467. getProgramParameter: function() { return {}; },
  468. getProgramInfoLog: function() { return {}; },
  469. getRenderbufferParameter: function() { return {}; },
  470. getShaderParameter: function() { return {}; },
  471. getShaderPrecisionFormat: function() { return {}; },
  472. getShaderInfoLog: function() { return {}; },
  473. getShaderSource: function() { return {}; },
  474. getTexParameter: function() { return {}; },
  475. getUniform: function() { return {}; },
  476. getUniformLocation: function() { return {}; },
  477. getVertexAttrib: function() { return {}; },
  478. getVertexAttribOffset: function() { return {}; },
  479. hint: function() { return {}; },
  480. isBuffer: function() { return {}; },
  481. isEnabled: function() { return {}; },
  482. isFramebuffer: function() { return {}; },
  483. isProgram: function() { return {}; },
  484. isRenderbuffer: function() { return {}; },
  485. isShader: function() { return {}; },
  486. isTexture: function() { return {}; },
  487. lineWidth: function() { return {}; },
  488. linkProgram: function() { return {}; },
  489. pixelStorei: function() { return {}; },
  490. polygonOffset: function() { return {}; },
  491. readPixels: function() { return {}; },
  492. renderbufferStorage: function() { return {}; },
  493. sampleCoverage: function() { return {}; },
  494. scissor: function() { return {}; },
  495. shaderSource: function() { return {}; },
  496. stencilFunc: function() { return {}; },
  497. stencilFuncSeparate: function() { return {}; },
  498. stencilMask: function() { return {}; },
  499. stencilMaskSeparate: function() { return {}; },
  500. stencilOp: function() { return {}; },
  501. stencilOpSeparate: function() { return {}; },
  502. texImage2D: function() { return {}; },
  503. texImage3D: function() { return {}; },
  504. texParameterf: function() { return {}; },
  505. texParameteri: function() { return {}; },
  506. texSubImage2D: function() { return {}; },
  507. uniform1f: function() { return {}; },
  508. uniform1fv: function() { return {}; },
  509. uniform1i: function() { return {}; },
  510. uniform1iv: function() { return {}; },
  511. uniform2f: function() { return {}; },
  512. uniform2fv: function() { return {}; },
  513. uniform2i: function() { return {}; },
  514. uniform2iv: function() { return {}; },
  515. uniform3f: function() { return {}; },
  516. uniform3fv: function() { return {}; },
  517. uniform3i: function() { return {}; },
  518. uniform3iv: function() { return {}; },
  519. uniform4f: function() { return {}; },
  520. uniform4fv: function() { return {}; },
  521. uniform4i: function() { return {}; },
  522. uniform4iv: function() { return {}; },
  523. uniformMatrix2fv: function() { return {}; },
  524. uniformMatrix3fv: function() { return {}; },
  525. uniformMatrix4fv: function() { return {}; },
  526. useProgram: function() { return {}; },
  527. validateProgram: function() { return {}; },
  528. vertexAttrib1f: function() { return {}; },
  529. vertexAttrib1fv: function() { return {}; },
  530. vertexAttrib2f: function() { return {}; },
  531. vertexAttrib2fv: function() { return {}; },
  532. vertexAttrib3f: function() { return {}; },
  533. vertexAttrib3fv: function() { return {}; },
  534. vertexAttrib4f: function() { return {}; },
  535. vertexAttrib4fv: function() { return {}; },
  536. vertexAttribPointer: function() { return {}; },
  537. viewport: function() { return {}; }
  538. };
  539. }