X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=irrlicht%2Fbindings%2Fvideo.scm;h=0bdf0f0c908b2fbff0bdc2fd71a01fc80ad51f06;hb=4eb7b8f04ad278d49d632d62030b5fe648e3b97a;hp=20445520e7b4b0162773235d975d611e92b566ee;hpb=954186a692ada723b904a9a28a7b9043deeb7552;p=guile-irrlicht.git diff --git a/irrlicht/bindings/video.scm b/irrlicht/bindings/video.scm index 2044552..0bdf0f0 100644 --- a/irrlicht/bindings/video.scm +++ b/irrlicht/bindings/video.scm @@ -19,9 +19,9 @@ (define-module (irrlicht bindings video) - #:use-module (system foreign)) - -(define cirr (dynamic-link "libCIrrlicht")) + #:use-module (system foreign) + #:use-module ((irrlicht bindings core) #:prefix ffi-core:) + #:use-module (irrlicht util foreign)) ;; E_DRIVER_TYPE enum (define-public EDT_NULL 0) @@ -57,35 +57,97 @@ ;; scolor struct (define-public scolor - (list uint32 uint32 uint32 uint32)) + (list uint8 uint8 uint8 uint8)) + +(define-public (scolor->pointer data) + (make-c-struct scolor (reverse data))) ;; Driver functions -(define-public begin-scene - (pointer->procedure - int - (dynamic-func "irr_video_beginScene" cirr) - (list '* int int '* '* '*))) - -(define-public end-scene - (pointer->procedure - int - (dynamic-func "irr_video_endScene" cirr) - (list '*))) - -(define-public get-fps - (pointer->procedure - int - (dynamic-func "irr_video_getFPS" cirr) - (list '*))) - -(define-public get-texture - (pointer->procedure - '* - (dynamic-func "irr_video_getTexture" cirr) - (list '* '*))) - -(define-public get-video-driver-name - (pointer->procedure - '* - (dynamic-func "irr_video_getName" cirr) - (list '*))) +(define-foreign begin-scene + int "irr_video_beginScene" (list '* int int '* '* '*)) + +(define-foreign end-scene + int "irr_video_endScene" (list '*)) + +(define-foreign get-fps + int "irr_video_getFPS" (list '*)) + +(define-foreign get-texture + '* "irr_video_getTexture" (list '* '*)) + +(define-foreign get-video-driver-name + '* "irr_video_getName" (list '*)) + +;; s3dvertex struct +(define-wrapped-pointer-type s3dvertex-type + s3dvertex? + pointer->s3dvertex s3dvertex->pointer + (lambda (vertex port) + (format port "#" + (pointer-address (s3dvertex->pointer vertex))))) + +(export s3dvertex->pointer) + +(define-public s3dvertex + (list ffi-core:vector3df + ffi-core:vector3df + scolor + ffi-core:vector2df)) + +(define-public (make-s3dvertex position normal color t-coords) + (pointer->s3dvertex + (make-c-struct s3dvertex (list position normal color t-coords)))) + +(define-public (vertex-position vertex) + (let ((data (parse-c-struct (s3dvertex->pointer vertex) s3dvertex))) + (car data))) + +;; smateriallayer struct +(define-public smateriallayer + (list '* uint8 uint8 uint8 uint8 uint8 int8 '* '*)) + +;; smaterial struct +(define-wrapped-pointer-type smaterial-type + smaterial? + pointer->smaterial smaterial->pointer + (lambda (material port) + (format port "#" + (pointer-address (smaterial->pointer material))))) + +(export smaterial->pointer) + +(define-public smaterial + (list smateriallayer smateriallayer smateriallayer smateriallayer ; textureLayer[4] + uint32 ; materialType + scolor ; ambientColor + scolor ; diffuseColor + scolor ; emissiveColor + scolor ; specularColor + float ; shininess + float ; materialTypeParam + float ; materialTypeParam2 + float ; thickness + uint8 ; zBuffer + uint8 ; antiAliasing + (bit-field-group + (uint8 4) ; colorMask:4 + (uint8 3) ; colorMaterial:3 + (uint32 4) ; blendOperation:4 + (uint8 3) ; polygonOffsetFactor:3 + (uint32 1) ; polygonOffsetDirection:1 + (uint8 1) ; wireframe:1 + (uint8 1) ; pointCloud:1 + (uint8 1) ; gouraudShading:1 + (uint8 1) ; lighting:1 + (uint8 1) ; zWriteEnable:1 + (uint8 1) ; backfaceCulling:1 + (uint8 1) ; frontfaceCulling:1 + (uint8 1) ; fogEnable:1 + (uint8 1) ; normalizeNormals:1 + (uint8 1) ; useMipMaps:1 + ))) + +;; (define-public (make-material #:key +;; (wireframe #f) +;; (lighting #t)) +;; material)