使用WebGL和CoffeeScript调用上下文

时间:2013-04-12 12:59:54

标签: 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.COLOR_BUFFER_BIT | @gl.DEPTH_BUFFER_BIT)

  @updateCamera(c)

  @draw(n0) if n0?

看看Shader。它通过了一个App。这个App类基本上是一个处理上下文的对象。 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来组合你的脚本)将所有内容包装在一个闭包中,这是不可能的。

0 个答案:

没有答案