anchor.diff:  (defparameter *anti-alias* nil)
   (defparameter *lighting* nil)
   (defparameter *fullscreen* nil)
  -(defparameter *display-list-id* 0)
  +(defparameter *display-list-id* nil)
   
  -(defparameter *pos* (make-instance 'point :z (- 3)))
  +(defparameter *pos* (make-instance 'point :z (- 3.0)))
   (defparameter *ang* (make-instance 'point))
   (defparameter *init-ang* (make-instance 'point))
   
  
positive.code:   (gl:color 0.0 1.0 0.0) (gl:vertex 0.0 (- size) 0.0) (gl:vertex 0.0 size 0.0)
    (gl:color 0.0 0.0 1.0) (gl:vertex 0.0 0.0 (- size)) (gl:vertex 0.0 0.0 size)
    (gl:end))
  
  (defun init-glscene ()
    (cond ((not (null *anti-alias*)) ;; Antialias
  
negative.code:       (gl:load-identity)))
  
  ;; CL-GLUT:IDLE-FUNC already names an ordinary function or a macro.
  (defmethod glut:idle ((w window))
    (incf (x *ang*))
    (incf (y *ang*))
    (glut:post-redisplay))
  
  ;; CL-GLUT:KEYBOARD-FUNC already names an ordinary function or a macro.
  ;;(defmethod glut:keyboard ((w window) key x y)
    ;; if (key == 120) {exit if (glutGetModifiers() & GLUT_ACTIVE_ALT);
  ;;  (if (= key 120)
  ;;      (if (and (glut:get-modifiers) :active-alt)
  ;;	  (sb-ext:exit))))
  
  ;; CL-GLUT:SPECIAL-FUNC already names an ordinary function or a macro.
  (defmethod glut:special ((w window) key x y)
    (let ((delta 0.1))
      ;; In C there is GLUT_KEY_F5, in Common Lisp it is
      ;; :number::key-f5, or just ::key-f5
      ;; caught WARNING: Constant :KEY-F5 conflicts with its asserted type NUMBER.
      ;; See also: The SBCL Manual, Node "Handling of Types"
      (if (eq key :key-f5) (set-fullscreen))
      
      (if (eq key :key-right) (incf (x *pos*) delta))
      
      (if (eq key :key-left) (decf (x *pos*) delta))
      
      (if (eq key :key-up) (incf (y *pos*) delta))
    
      (if (eq key :key-down) (decf (y *pos*) delta))
      
      (if (eq key :key-end) (incf (z *pos*) delta))
      
      (if (eq key :key-home) (decf (z *pos*) delta))))
  
  ;; CL-GLUT:MOUSE-FUNC already names an ordinary function or a macro.
  (defmethod glut:mouse ((w window) button state x y)
    (cond ((eq button :left-button)
  	 (if (eq state :up) (setf *dragging* nil))
  	 
  	 (cond ((eq state :down)
  		(setf *dragging* t)
  		(setf (x *init-ang*) x)
  		(setf (y *init-ang*) y))))))
  
  ;; CL-GLUT:PASSIVE-MOTION-FUNC already names an ordinary function or a macro.
  (defmethod glut:passive-motion ((w window) x y)
    ;; do nothing
    )
  
  ;; CL-GLUT:MOTION-FUNC already names an ordinary function or a macro.
  (defmethod glut:motion ((w window) x y)
    (when *dragging*
      (incf (x *ang*) (- x (x *init-ang*)))
      (incf (y *ang*) (- y (y *init-ang*)))
      (setf (x *init-ang*) x)
      (setf (y *init-ang*) y)
      (glut:post-redisplay)))
  
  (let ((window (make-instance 'window)))
    (setf glut:*run-main-loop-after-display* nil)
    (glut:init)
    (glut:display-window window)
    (init-glscene)
  
    ;; TODO: You cannot create menus because of this bug:
    ;; https://github.com/3b/cl-opengl/issues/83#issuecomment-497723662
    ;;(show "Doing (glut:create-menu)")
    ;;(glut:create-menu menu-status)
    ;;(glut:add-menu-entry "Full Screen\tF5" +fullscreen+)
    ;;(glut:add-menu-entry "Exit\tAlt+x" +exit+)
    ;;(glut:attach-menu :right-button)
    
    (glut:main-loop))
  