我无法弄清楚如何做到这一点。我一直在非法调用。 假设我从程序中的函数调用函数...
setGlState( cGl.DEPTH_WRITEMASK, true, cGl.depthMask );
所以我将不同的状态和函数传递给setGlState函数,以便它可以做出一些决定并在需要设置状态时调用gl函数。
setGlState = function ( cap, value, setterFunc ) {
....
if( needsToBeSent ) {
setterFunc( value )
}
}
由于某种原因,此代码不起作用。我需要绑定函数还是调用函数?函数是否在gl上下文中是一个问题。我
答案 0 :(得分:1)
您需要传递一个新函数,该函数将在正确的上下文中调用旧函数(因此函数内this
为cGl
)。
bind
会为你做到这一点。
setGlState( cGl.DEPTH_WRITEMASK.bind(cGl), true, cGl.depthMask.bind(cGl) );
上面链接的文档包含一个本机不支持bind
的浏览器的垫片。