Когда я вызываю (draw win), я получаю сообщение об ошибке: «Общая функция не может найти применимый метод. Я только что попал в CLOS и использую sdl2kit, чтобы просто отобразить окно.
(defclass game-window (kit.sdl2:window)
((rotation :initform 0.0)))
(defmethod render ((win game-window))
(with-slots (rotation) win
(gl:load-identity)
(gl:rotate rotation 0 0 1)
(gl:clear-color 0.0 0.0 1.0 1.0)
(gl:clear :color-buffer)
(gl:begin :triangles)
(gl:color 1.0 0.0 0.0)
(gl:vertex 0.0 1.0)
(gl:vertex -1.0 -1.0)
(gl:vertex 1.0 -1.0)
(gl:end)))
(defgeneric draw(win)
(:documentation "draw window"))
(defun main ()
(let (( win (make-instance 'game-window)))
(draw win)))
GAME-WINDOW
. См., например, Practical Common Lisp Chapter 16. - person jkiiski   schedule 17.02.2017draw
сrender
? Вы определили метод дляrender
, но не дляdraw
. - person coredump   schedule 17.02.2017DEFGENERIC
ничего не вызывает. Он определяет общую функцию, в данном случае с именемDRAW
, которую можно специализировать для различных типов аргументов путем определения методов (так же, как метод, который у вас есть дляRENDER
). - person jkiiski   schedule 17.02.2017