这是一个简单的代码,只是将窗口颜色修改了4次。
也许有一些很明显的东西我没看到。
我的目标是从零开始学习计算机图形学,并想要逐像素绘制以完全控制。我正在寻找一种快速的方法来做到这一点。
这里 是完整的代码。
相关的clojure部分:
(defmacro for-loop [[sym init check change :as params] & steps]
`(loop [~sym ~init value# nil]
(if ~check
(let [new-value# (do ~@steps)]
(recur ~change new-value#))
value#)))
(time
(for-loop
[k 0 (< k 2) (inc k)]
(for-loop
[c 0 (< c 2) (inc c)]
(for-loop
[i 0 (< i width) (inc i)]
(for-loop
[j 0 (< j height) (inc j)]
(aset ^ints @pixels (+ i (* j width)) (get cs c))))
(.repaint canvas))))
Java中的相同代码:
long t = System.currentTimeMillis();
for (int k = 0 ; k < 2; k++) {
for (int c = 0; c < 2; c++) {
for (int i = 0 ; i < width; i++) {
for (int j = 0; j < height; j++) {
pixels[i + j * width] = cs[c];
}
}
repaint();
}
}
System.out.println(System.currentTimeMillis() - t);