Update of /project/cello/cvsroot/cello/kt-opengl
In directory clnet:/tmp/cvs-serv20668
Modified Files:
ogl-utils.lisp
Log Message:
Code cleanup.
Added: Type declarations and compiler directives.
--- /project/cello/cvsroot/cello/kt-opengl/ogl-utils.lisp 2006/10/01 12:30:14 1.7
+++ /project/cello/cvsroot/cello/kt-opengl/ogl-utils.lisp 2006/10/01 20:44:22 1.8
@@ -22,10 +22,82 @@
;;; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
;;; IN THE SOFTWARE.
-;;; $Id: ogl-utils.lisp,v 1.7 2006/10/01 12:30:14 fgoenninger Exp $
+;;; $Id: ogl-utils.lisp,v 1.8 2006/10/01 20:44:22 fgoenninger Exp $
+
+(declaim (optimize (debug 1) (speed 3) (safety 1) (compilation-speed 0)))
(in-package :kt-opengl)
+;;; ===========================================================================
+;;; SPECIAL / GLOBAL VARS
+;;; ===========================================================================
+
+(defparameter *textures-1* (fgn-alloc 'gluint 1 :ignore))
+(defparameter *new-listing* nil)
+
+(defparameter *dbg-viewport-r* (fgn-alloc 'glint 4 :ignore))
+
+;;; ===========================================================================
+;;; DATA STRUCTURES / DATA DEFINITIONS
+;;; ===========================================================================
+
+(defstruct v3i
+ (x :type GLint)
+ (y :type GLint)
+ (z :type GLint))
+
+(defstruct v3f
+ (x :type GLfloat)
+ (y :type GLfloat)
+ (z :type GLfloat))
+
+(defstruct v3d
+ (x :type GLdouble)
+ (y :type GLdouble)
+ (z :type GLdouble))
+
+;;; ===========================================================================
+;;; FUNCTIONS
+;;; ===========================================================================
+
+;;; ---------------------------------------------------------------------------
+;;; CONSTRUCTORS
+;;; ---------------------------------------------------------------------------
+
+(defun mk-vertex3i (x y z)
+ (make-v3i :x x :y y :z z))
+
+(defun mk-vertex3f (x y z)
+ (make-v3f :x x :y y :z z))
+
+(defun mk-vertex3d (x y z)
+ (make-v3d :x x :y y :z z))
+
+(defmacro mkv3i (v3i-lists)
+ `(mapcar #'(lambda (vtx)
+ (mk-vertex3i (first vtx)
+ (second vtx)
+ (third vtx)))
+ ',v3i-lists))
+
+(defmacro mkv3f (v3f-lists)
+ `(mapcar #'(lambda (vtx)
+ (mk-vertex3f (first vtx)
+ (second vtx)
+ (third vtx)))
+ ',v3f-lists))
+
+(defmacro mkv3d (v3d-lists)
+ `(mapcar #'(lambda (vtx)
+ (mk-vertex3d (first vtx)
+ (second vtx)
+ (third vtx)))
+ ',v3d-lists))
+
+;;; ---------------------------------------------------------------------------
+;;; TEXTURE SUPPORT
+;;; ---------------------------------------------------------------------------
+
(defun ogl-tex-activate (tex-name)
(assert tex-name)
;;(print `(ogl-tex-activate doing ,tex-name))
@@ -33,8 +105,6 @@
(gl-bind-texture gl_texture_2d tex-name)
(gl-polygon-mode gl_front_and_back gl_fill)) ;; just front ?
-(defparameter *textures-1* (fgn-alloc 'gluint 1 :ignore))
-
(defun ogl-texture-delete (texture-name)
;;(print `(deleting-tx ,texture-name))
(setf (ff-elt *textures-1* gluint 0) texture-name)
@@ -86,7 +156,6 @@
(gl-get-integerv gl_scissor_box box)
box))
-(ukt::export! ogl-current-color)
(defun ogl-current-color ()
(let ((rgba (fgn-alloc 'glint 4 :ogl-current-color)))
(gl-get-integerv gl_current_color rgba)
@@ -98,34 +167,38 @@
(defun farther (&rest values)
(apply '- values))
+
(defun xlin (&rest values) ;; yep. moves matrix, not object
(apply '+ values))
(defun nearer (&rest values)
(apply '+ values))
+
(defun xlout (&rest values) ;; yep. moves matrix, not object
(apply '- values))
(defun ncalc-normalf(v0x v0y v0z v1x v1y v1z v2x v2y v2z
&aux d0x d0y d0z d1x d1y d1z)
+ (declare (type GLfloat
+ v0x v0y v0z v1x v1y v1z v2x v2y v2z
+ d0x d0y d0z d1x d1y d1z))
+
(setf d0x (- v1x v0x)
- d0y (- v1y v0y)
- d0z (- v1z v0z))
+ d0y (- v1y v0y)
+ d0z (- v1z v0z))
(setf d1x (- v2x v1x)
- d1y (- v2y v1y)
- d1z (- v2z v1z))
+ d1y (- v2y v1y)
+ d1z (- v2z v1z))
(xgl-normalize-v3f
(- (* d0y d1z) (* d0z d1y))
(- (* d0z d1x) (* d0x d1z))
(- (* d0x d1y) (* d0y d1x))))
-
-(defstruct v3f
- (x 0)(y 0)(z 0))
-
(defun xgl-normalize-v3f (x y z)
+ (declare (type GLfloat x y z))
+
(let ((m2 (+ (* x x) (* y y) (* z z))))
(if (zerop m2)
(values x y z)
@@ -134,11 +207,6 @@
;;(cells::count-it :normalize-3f)
(values (+ (/ x m)) (+ (/ y m)) (+ (/ z m)))))))
-;;;(cffi-uffi-compat:def-foreign-type bool* (* glboolean))
-;;;
-;;;#-lispworks
-;;;(declaim (type bool* *ogl-boolean*))
-
(defparameter *ogl-boolean*
(fgn-alloc 'glboolean 1 :ignore))
@@ -146,11 +214,6 @@
(gl-get-booleanv gl-code *ogl-boolean*)
(not (zerop (cffi-uffi-compat:deref-array *ogl-boolean* '(:array glboolean) 0))))
-;;;(cffi-uffi-compat:def-foreign-type glint* (* glint))
-;;;
-;;;#-lispworks
-;;;(declaim (type glint* *ogl-int*))
-
(defparameter *ogl-int*
(fgn-alloc 'glint 1 :ignore))
@@ -168,9 +231,6 @@
(gl-get-integerv gl-code *ogl-int*)
(eltgli *ogl-int* 0))
-(defparameter *dbg-viewport-r*
- (fgn-alloc 'glint 4 :ignore))
-
(defun dump-viewport (key)
(gl-get-integerv gl_viewport *dbg-viewport-r*)
(format t "~&dump-viewport> ~a: ~a" key
@@ -245,8 +305,6 @@
(loop for (key . list) in (ogl-list-cache node)
do (format t "~d : ~a" list key)))
-(defparameter *new-listing* nil)
-
(defun flatten (&rest args)
(mapcan (lambda (arg)
(if (consp arg)