虽然我确实有点理解其背后的原因,但我发现 LWJGL 将 OpenGL 方法和值拆分到众多类中相当烦人。因为无论如何我更喜欢处理函数,所以我目前正在编写一个 Clojure 模块,该模块在单个命名空间中公开 OpenGL 3.3 核心函数和常量。
现在的问题是,一些 OpenGL 函数在 LWJGL 中有重载,例如glBindAttribLocation
有一个 forByteBuffer
和一个 for CharSequence
。现在我说的是最广泛意义上的“问题”,因为我还不确定这是否真的是一个问题。
例如,我可以写吗
(defn glBindAttribLocation [program index name]
(GL20/glBindAttribLocation program index name))
并相信 Clojure 会找出要调用的重载,还是我必须手动执行此操作并带有一些 typehint-uglyness?
同样,LWJGL 的许多函数都采用float
s 或int
s - 但我听说 Clojure 本身只使用long
and double
(即原语)。这是否意味着每次我调用这些函数之一时,无论何时我调用这些函数之一,我都将转换为Integer
( Float
),然后从那里转换为int
( float
)?