
41. Features and Design Choices in SpiderGL 593
gl._spidergl = { }; // private SpiderGL injections container.
gl._spidergl.setupXYZ = setupXYZ ;
gl._spidergl.xyz = null ;
// ... other extensions ...
// A reference to native getExtension is saved ...
gl._spidergl.getExtension =gl.getExtension;
// ... and replaced to expose new extensions
gl . getExtension = function ( name) {
var sgl = this ._spidergl;
switch (name) {
case "SGL_XYZ ":
if (!sgl.xyz) {
sgl. setupXYZ ( this); // setup extension on first call
}
return sgl .xyz;
// ... other extensions ...
default : // call to native getExtension
return sgl .getExtension. apply(this , arguments);
}
};
Listing 41.7.