Hello everybody,
I dug a little into CFFI now to solve my selection problem and I got it to work with %gl:selection-buffer. (thread "Is this project alive?")
However now I am facing another problem: how do I find out the current matrix mode (I want to save it for later return)? gl:get-integer and cl-opengl-bindings::get-integer-v don't seem to return usable values:
CL-USER> (mapcar (lambda (mode) (matrix-mode mode) (list mode (get-integer :matrix-mode))) '(:modelview :texture :projection)) ((:MODELVIEW 0) (:TEXTURE 0) (:PROJECTION 0)) CL-USER> (mapcar (lambda (mode) (matrix-mode mode) (list mode (get-integer :matrix-mode))) '(:modelview :texture :projection)) ((:MODELVIEW 0) (:TEXTURE 0) (:PROJECTION 0)) CL-USER> (with-foreign-object (mm :int) (mapcar (lambda (mode) (matrix-mode mode) (load-identity) (cl-opengl-bindings::get-integer-v #xBA0 mm) ; #xBA0 is :matrix-mode according to constants.lisp (list mode (mem-ref mm :int))) '(:modelview :texture :projection))) ((:MODELVIEW 690846) (:TEXTURE 690846) (:PROJECTION 690846)) CL-USER> (with-foreign-object (mm :int) (mapcar (lambda (mode) (matrix-mode mode) (load-identity) (cl-opengl-bindings::get-integer-v #xBA0 mm) (list mode (mem-ref mm :int))) '(:modelview :texture :projection))) ((:MODELVIEW 281840) (:TEXTURE 281840) (:PROJECTION 281840)) CL-USER> (with-foreign-object (mm :int) (mapcar (lambda (mode) (matrix-mode mode) (load-identity) (cl-opengl-bindings::get-integer-v #xBA0 mm) (list mode (mem-aref mm :int))) ; now with mem-aref instead of mem-ref '(:modelview :texture :projection))) ((:MODELVIEW 675676) (:TEXTURE 675676) (:PROJECTION 675676)) CL-USER> (with-foreign-object (mm :int) (mapcar (lambda (mode) (matrix-mode mode) (load-identity) (cl-opengl-bindings::get-integer-v #xBA0 mm) (list mode (mem-aref mm :int))) '(:modelview :texture :projection))) ((:MODELVIEW 671420) (:TEXTURE 671420) (:PROJECTION 671420)) CL-USER>
Obviously there it is not the matrix mode which is returned, what am I doing wrong?
Thank you in advance, best regards Jakob