{
hunk ./glu/glu.lisp 95
-;;; TODO: gluBuild{1,2,3}DMipmaps; gluBuildP1,2,3}DMipmapLevels
+;;; TODO: gluBuild{1,3}DMipmaps; gluBuildP1,3}DMipmapLevels
+
+
+(defcfun ("gluBuild2DMipmaps" %GluBuild2DMipmaps) :void
+    (target %gl:enum)
+    (internalformat %gl:int)
+    (width %gl:sizei)
+    (height %gl:sizei)
+    (format %gl:enum)
+    (type %gl:enum)
+    (data :pointer))
+
+
+(defun build-2d-mipmaps (target internal-format width height format type data)
+  (let ((internal-size (gl::internal-format->int internal-format)))
+    (if (pointerp data)
+        (%gluBuild2dMipmaps target internal-size width height format type data)
+        (cl-opengl::with-pixel-array (array type data)
+          (%gluBuild2dMipmaps target internal-size width height format type array)))))
hunk ./glu/package.lisp 43
+   #:build-2d-mipmaps
hunk ./glut/callbacks.lisp 183
-  :right-button)
+  :right-button
+  :wheel-up
+  :wheel-down
+  :button4
+  :button5
+  :button6
+  :button7)
}
