(defmacro gl
"Wraps the WebGL2RenderingContext object, calling a method if the provided symbol starts with a
lower-case letter, or a static field if it starts with an upper-case letter."
[game n & args]
(let [s (str n)
^Character l (nth s 0)]
(if (Character/isUpperCase l)
`(aget (:context ~game) ~s)
(concat [(symbol (str "." s)) `(:context ~game)] args))))