X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=irrlicht%2Fbindings%2Fvideo.scm;h=0bdf0f0c908b2fbff0bdc2fd71a01fc80ad51f06;hb=4eb7b8f04ad278d49d632d62030b5fe648e3b97a;hp=d02db523dfad6ed145aa6ad4371b8ed355267e44;hpb=5a8e38d5ce29b53c5521e5ca71698d6c232ba897;p=guile-irrlicht.git diff --git a/irrlicht/bindings/video.scm b/irrlicht/bindings/video.scm index d02db52..0bdf0f0 100644 --- a/irrlicht/bindings/video.scm +++ b/irrlicht/bindings/video.scm @@ -18,7 +18,10 @@ ;;; . -(define-module (irrlicht bindings video)) +(define-module (irrlicht bindings video) + #: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) @@ -28,3 +31,123 @@ (define-public EDT_DIRECT3D9 4) (define-public EDT_OPENGL 5) (define-public EDT_COUNT 6) + +;; irr_video_E_MATERIAL_FLAG enum +(define-public EMF_WIREFRAME #x1) +(define-public EMF_POINTCLOUD #x2) +(define-public EMF_GOURAUD_SHADING #x4) +(define-public EMF_LIGHTING #x8) +(define-public EMF_ZBUFFER #x10) +(define-public EMF_ZWRITE_ENABLE #x20) +(define-public EMF_BACK_FACE_CULLING #x40) +(define-public EMF_FRONT_FACE_CULLING #x80) +(define-public EMF_BILINEAR_FILTER #x100) +(define-public EMF_TRILINEAR_FILTER #x200) +(define-public EMF_ANISOTROPIC_FILTER #x400) +(define-public EMF_FOG_ENABLE #x800) +(define-public EMF_NORMALIZE_NORMALS #x1000) +(define-public EMF_TEXTURE_WRAP #x2000) +(define-public EMF_ANTI_ALIASING #x4000) +(define-public EMF_COLOR_MASK #x8000) +(define-public EMF_COLOR_MATERIAL #x10000) +(define-public EMF_USE_MIP_MAPS #x20000) +(define-public EMF_BLEND_OPERATION #x40000) +(define-public EMF_POLYGON_OFFSET #x80000) + + +;; scolor struct +(define-public scolor + (list uint8 uint8 uint8 uint8)) + +(define-public (scolor->pointer data) + (make-c-struct scolor (reverse data))) + +;; Driver functions +(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)