作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近一直在尝试使用 lwjgl 库在 Clojure 中测试 OpenGL。我从这个代码开始:
(ns test.core
(:import [org.lwjgl.opengl Display DisplayMode GL11]))
(defn init-window
[width height title]
(Display/setDisplayMode (DisplayMode. width height))
(Display/setTitle title)
(Display/create))
(defn update
[]
(GL11/glClearColor 0 0 0 0)
(GL11/glClear GL11/GL_COLOR_BUFFER_BIT))
(defn run
[]
(init-window 800 600 "test")
(while (not (Display/isCloseRequested))
(update)
(Display/update))
(Display/destroy))
(defn -main
[& args]
(.start (Thread. run)))
glClearColor
的调用)。
init-window
功能 :
(ns copengl.core
(:import [org.lwjgl.opengl Display DisplayMode GL11]))
(defn init-window
[width height title]
(Display/setDisplayMode (DisplayMode. width height))
(Display/setTitle title)
(Display/create))
(defn mainloop
[{:keys [update-fn]}]
(while (not (Display/isCloseRequested))
(update-fn)
(Display/update))
(Display/destroy))
(defn run
[data]
(init-window (:width data) (:height data) (:title data))
(mainloop data))
(defn start
[data]
(.start (Thread. (partial run data))))
(ns test.core
(:import [org.lwjgl.opengl Display DisplayMode GL11])
(:require [copengl.core :as starter]))
(def -main
[& args]
(starter/start {:width 800 :height 600 :title "Test" :update-fn update})
-main
再次看到变化。
update-fn
更改为到我的更新函数的名称(
update
),当它们在同一个文件中时,我可以在它运行时进行更改。
update
通过使用 nREPL 插件来评估它没有任何影响,因为
mainloop
函数正在使用函数 - 不查找符号
update
并使用它。
最佳答案
通过放置 #'
将 var update 而不是当前包含在 var update 中的函数传递给它在 var 名称前面。这将导致每次调用时都会在 var 中查找更新函数的内容。
(def -main
[& args]
(starter/start {:width 800 :height 600 :title "Test" :update-fn #'update})
关于opengl - Clojure 运行时编辑代码拆分为不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988759/
我是一名优秀的程序员,十分优秀!