【发布时间】:2012-10-09 15:17:41
【问题描述】:
虽然我确实有点理解其背后的原因,但我发现 LWJGL 将 OpenGL 方法和值拆分到众多类中相当烦人。因为无论如何我更喜欢处理函数,所以我目前正在编写一个 Clojure 模块,它在单个命名空间中公开 OpenGL 3.3 核心函数和常量。
现在的问题是,一些 OpenGL 函数在 LWJGL 中有重载,例如 glBindAttribLocation 有一个用于 ByteBuffer 和一个用于 CharSequence。现在我说的是广义上的“问题”,因为我还不确定这是否真的是一个问题。
我可以写吗
(defn glBindAttribLocation [program index name]
(GL20/glBindAttribLocation program index name))
并相信 Clojure 会找出要调用的重载,还是我必须手动执行此操作并带有一些难看的类型提示?
同样,LWJGL 的许多函数都采用 floats 或 ints - 但我听说 Clojure 本身只使用 long 和 double(即原语)。这是否意味着每次我调用这些函数之一时,无论何时我调用这些函数之一,我都会转换为 Integer (Float),然后从那里转换为 int (float)?
【问题讨论】:
-
转换可能直接是
long->int和float->double,如果这有什么安慰的话:) 调用重载函数真的很麻烦,没有任何帮助。