extensions.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*!
  2. {
  3. "name": "WebGL Extensions",
  4. "property": "webglextensions",
  5. "tags": ["webgl", "graphics"],
  6. "builderAliases": ["webgl_extensions"],
  7. "async": true,
  8. "authors": ["Ilmari Heikkinen"],
  9. "notes": [{
  10. "name": "Kronos extensions registry",
  11. "href": "https://www.khronos.org/registry/webgl/extensions/"
  12. }]
  13. }
  14. !*/
  15. /* DOC
  16. Detects support for OpenGL extensions in WebGL. It's `true` if the [WebGL extensions API](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Using_Extensions) is supported, then exposes the supported extensions as subproperties, e.g.:
  17. ```javascript
  18. if (Modernizr.webglextensions) {
  19. // WebGL extensions API supported
  20. }
  21. if ('OES_vertex_array_object' in Modernizr.webglextensions) {
  22. // Vertex Array Objects extension supported
  23. }
  24. ```
  25. */
  26. define(['Modernizr', 'createElement', 'test/webgl'], function(Modernizr, createElement) {
  27. // based on code from ilmari heikkinen
  28. // code.google.com/p/graphics-detect/source/browse/js/detect.js
  29. // Not Async but handles it's own self
  30. Modernizr.addAsyncTest(function() {
  31. // Not a good candidate for css classes, so we avoid addTest stuff
  32. Modernizr.webglextensions = false;
  33. if (!Modernizr.webgl) {
  34. return;
  35. }
  36. var canvas;
  37. var ctx;
  38. var exts;
  39. try {
  40. canvas = createElement('canvas');
  41. ctx = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
  42. exts = ctx.getSupportedExtensions();
  43. }
  44. catch (e) {
  45. return;
  46. }
  47. if (ctx !== undefined) {
  48. Modernizr.webglextensions = new Boolean(true);
  49. }
  50. for (var i = -1, len = exts.length; ++i < len;) {
  51. Modernizr.webglextensions[exts[i]] = true;
  52. }
  53. canvas = undefined;
  54. });
  55. });