使用WebGL和CoffeeScript调用上下文

使用WebGL和CoffeeScript调用上下文,coffeescript,stack,closures,webgl,Coffeescript,Stack,Closures,Webgl,我认为我的要求是不可能的,但我正在使用Coffeescript创建一个简单的WebGL库。我在看纹理和着色器,我有以下设置。在我的示例文件中,我有以下内容: cgl = new CoffeeGL.App('webgl-canvas') shader = new CoffeeGL.Shader.Basic(cgl).bind() cgl.drawLoop = () -> @gl.clearColor(0.15, 0.15, 0.15, 1.0) @gl.clear(@gl.CO

我认为我的要求是不可能的,但我正在使用Coffeescript创建一个简单的WebGL库。我在看纹理和着色器,我有以下设置。在我的示例文件中,我有以下内容:

cgl = new CoffeeGL.App('webgl-canvas')

shader = new CoffeeGL.Shader.Basic(cgl).bind()

cgl.drawLoop = () ->

  @gl.clearColor(0.15, 0.15, 0.15, 1.0)
  @gl.clear(@gl.COLOR_BUFFER_BIT | @gl.DEPTH_BUFFER_BIT)

  @updateCamera(c)

  @draw(n0) if n0?
看看着色器。它通过了一个应用程序。这个应用程序类基本上是一个处理上下文的对象。GL上下文、画布以及所有这些都很好地封装在一个类中。由于着色器在其整个生命周期中都需要上下文(与已发送到图形卡的纹理和几何体相同),因此在创建时会为其提供上下文

我觉得这不是那么优雅。有没有可能创造出这样的东西

cgl = new CoffeeGL.App('webgl-canvas')

cgl.init = () ->

    shader = new CoffeeGL.Shader.Basic().bind()

cgl.drawLoop = () ->

  @gl.clearColor(0.15, 0.15, 0.15, 1.0)
  @gl.clear(@gl.COLOR_BUFFER_BIT | @gl.DEPTH_BUFFER_BIT)

  @updateCamera(c)

  @draw(n0) if n0?
上下文实际上是从调用构造函数的上下文(或者编译或绑定本身不一定是构造函数)这一事实中获得的


我想,由于Coffeescript(特别是如果您使用node.js组合脚本)将所有内容都封装在一个闭包中,所以这是不可能的。

-b
/
--bare
选项禁用iife包装器是的,这无疑会做到。谢谢我只是想知道,对于那些可能不得不使用它的人来说,哪一个更好。干杯