/*==========================================================================; * * Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved. * * File: d3drm.h * Content: Direct3DRM include file *@@BEGIN_MSINTERNAL * * History: * Date By Reason * ==== == ====== * 27/02/96 stevela Moved from RL to D3DRM. *@@END_MSINTERNAL * ***************************************************************************/ #ifndef __D3DRMDEFS_H__ #define __D3DRMDEFS_H__ #include #include "d3dtypes.h" #ifdef WIN32 #define D3DRMAPI __stdcall #else #define D3DRMAPI #endif #if defined(__cplusplus) extern "C" { #endif #ifndef TRUE #define FALSE 0 #define TRUE 1 #endif typedef struct _D3DRMVECTOR4D { D3DVALUE x, y, z, w; } D3DRMVECTOR4D, *LPD3DRMVECTOR4D; typedef D3DVALUE D3DRMMATRIX4D[4][4]; typedef struct _D3DRMQUATERNION { D3DVALUE s; D3DVECTOR v; } D3DRMQUATERNION, *LPD3DRMQUATERNION; typedef struct _D3DRMRAY { D3DVECTOR dvDir; D3DVECTOR dvPos; } D3DRMRAY, *LPD3DRMRAY; typedef struct _D3DRMBOX { D3DVECTOR min, max; } D3DRMBOX, *LPD3DRMBOX; typedef void (*D3DRMWRAPCALLBACK) (LPD3DVECTOR, int* u, int* v, LPD3DVECTOR a, LPD3DVECTOR b, LPVOID); typedef enum _D3DRMLIGHTTYPE { D3DRMLIGHT_AMBIENT, D3DRMLIGHT_POINT, D3DRMLIGHT_SPOT, D3DRMLIGHT_DIRECTIONAL, D3DRMLIGHT_PARALLELPOINT } D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE; typedef enum _D3DRMSHADEMODE { D3DRMSHADE_FLAT = 0, D3DRMSHADE_GOURAUD = 1, D3DRMSHADE_PHONG = 2, D3DRMSHADE_MASK = 7, D3DRMSHADE_MAX = 8 } D3DRMSHADEMODE, *LPD3DRMSHADEMODE; typedef enum _D3DRMLIGHTMODE { D3DRMLIGHT_OFF = 0 * D3DRMSHADE_MAX, D3DRMLIGHT_ON = 1 * D3DRMSHADE_MAX, D3DRMLIGHT_MASK = 7 * D3DRMSHADE_MAX, D3DRMLIGHT_MAX = 8 * D3DRMSHADE_MAX } D3DRMLIGHTMODE, *LPD3DRMLIGHTMODE; typedef enum _D3DRMFILLMODE { D3DRMFILL_POINTS = 0 * D3DRMLIGHT_MAX, D3DRMFILL_WIREFRAME = 1 * D3DRMLIGHT_MAX, D3DRMFILL_SOLID = 2 * D3DRMLIGHT_MAX, D3DRMFILL_MASK = 7 * D3DRMLIGHT_MAX, D3DRMFILL_MAX = 8 * D3DRMLIGHT_MAX } D3DRMFILLMODE, *LPD3DRMFILLMODE; typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY; #define D3DRMRENDER_WIREFRAME (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_WIREFRAME) #define D3DRMRENDER_UNLITFLAT (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_SOLID) #define D3DRMRENDER_FLAT (D3DRMSHADE_FLAT+D3DRMLIGHT_ON+D3DRMFILL_SOLID) #define D3DRMRENDER_GOURAUD (D3DRMSHADE_GOURAUD+D3DRMLIGHT_ON+D3DRMFILL_SOLID) #define D3DRMRENDER_PHONG (D3DRMSHADE_PHONG+D3DRMLIGHT_ON+D3DRMFILL_SOLID) #define D3DRMRENDERMODE_BLENDEDTRANSPARENCY 1 #define D3DRMRENDERMODE_SORTEDTRANSPARENCY 2 //@@BEGIN_MSINTERNAL #define D3DRMRENDERMODE_SORTIFNOZBUFFER 4 //@@END_MSINTERNAL #define D3DRMRENDERMODE_LIGHTINMODELSPACE 8 #define D3DRMRENDERMODE_VIEWDEPENDENTSPECULAR 16 #define D3DRMRENDERMODE_DISABLESORTEDALPHAZWRITE 32 //@@BEGIN_MSINTERNAL typedef enum _D3DRMLIGHTINGFREQUENCY { D3DRMLIGHT_NEVER, D3DRMLIGHT_ONCE, D3DRMLIGHT_CONTINUALLY } D3DRMLIGHTINGFREQUENCY; //@@END_MSINTERNAL typedef enum _D3DRMTEXTUREQUALITY { D3DRMTEXTURE_NEAREST, /* choose nearest texel */ D3DRMTEXTURE_LINEAR, /* interpolate 4 texels */ D3DRMTEXTURE_MIPNEAREST, /* nearest texel in nearest mipmap */ D3DRMTEXTURE_MIPLINEAR, /* interpolate 2 texels from 2 mipmaps */ D3DRMTEXTURE_LINEARMIPNEAREST, /* interpolate 4 texels in nearest mipmap */ D3DRMTEXTURE_LINEARMIPLINEAR /* interpolate 8 texels from 2 mipmaps */ } D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY; /* * Texture flags */ #define D3DRMTEXTURE_FORCERESIDENT 0x00000001 /* texture should be kept in video memory */ #define D3DRMTEXTURE_STATIC 0x00000002 /* texture will not change */ #define D3DRMTEXTURE_DOWNSAMPLEPOINT 0x00000004 /* point filtering should be used when downsampling */ #define D3DRMTEXTURE_DOWNSAMPLEBILINEAR 0x00000008 /* bilinear filtering should be used when downsampling */ #define D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH 0x00000010 /* reduce bit depth when downsampling */ #define D3DRMTEXTURE_DOWNSAMPLENONE 0x00000020 /* texture should never be downsampled */ #define D3DRMTEXTURE_CHANGEDPIXELS 0x00000040 /* pixels have changed */ #define D3DRMTEXTURE_CHANGEDPALETTE 0x00000080 /* palette has changed */ #define D3DRMTEXTURE_INVALIDATEONLY 0x00000100 /* dirty regions are invalid */ /* * Shadow flags */ #define D3DRMSHADOW_TRUEALPHA 0x00000001 /* shadow should render without artifacts when true alpha is on */ typedef enum _D3DRMCOMBINETYPE { D3DRMCOMBINE_REPLACE, D3DRMCOMBINE_BEFORE, D3DRMCOMBINE_AFTER } D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE; typedef D3DCOLORMODEL D3DRMCOLORMODEL, *LPD3DRMCOLORMODEL; typedef enum _D3DRMPALETTEFLAGS { D3DRMPALETTE_FREE, /* renderer may use this entry freely */ D3DRMPALETTE_READONLY, /* fixed but may be used by renderer */ D3DRMPALETTE_RESERVED /* may not be used by renderer */ } D3DRMPALETTEFLAGS, *LPD3DRMPALETTEFLAGS; typedef struct _D3DRMPALETTEENTRY { unsigned char red; /* 0 .. 255 */ unsigned char green; /* 0 .. 255 */ unsigned char blue; /* 0 .. 255 */ unsigned char flags; /* one of D3DRMPALETTEFLAGS */ } D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY; typedef struct _D3DRMIMAGE { int width, height; /* width and height in pixels */ int aspectx, aspecty; /* aspect ratio for non-square pixels */ int depth; /* bits per pixel */ int rgb; /* if false, pixels are indices into a palette otherwise, pixels encode RGB values. */ int bytes_per_line; /* number of bytes of memory for a scanline. This must be a multiple of 4. */ void* buffer1; /* memory to render into (first buffer). */ void* buffer2; /* second rendering buffer for double buffering, set to NULL for single buffering. */ unsigned long red_mask; unsigned long green_mask; unsigned long blue_mask; unsigned long alpha_mask; /* if rgb is true, these are masks for the red, green and blue parts of a pixel. Otherwise, these are masks for the significant bits of the red, green and blue elements in the palette. For instance, most SVGA displays use 64 intensities of red, green and blue, so the masks should all be set to 0xfc. */ int palette_size; /* number of entries in palette */ D3DRMPALETTEENTRY* palette; /* description of the palette (only if rgb is false). Must be (1<> 16) #define RLFloat(x) ((x) / 65536.0) extern RLValue D3DRMAPI RLDivide(RLValue, RLValue); extern RLValue D3DRMAPI RLMultiply(RLValue, RLValue); #define RLMultiply3(a,b,c) RLMultiply(RLMultiply(a, b), c) #else typedef float RLValue; #define RLVal(x) ((RLValue) (x)) #define RLInt(x) ((int)(x)) #define RLFloat(x) ((float) (x)) #define RLDivide(a,b) ((RLValue) ((double) (a) / (double) (b))) #define RLMultiply(a,b) ((RLValue) ((a) * (b))) #define RLMultiply3(a,b,c) ((RLValue) ((a) * (b) * (c))) #endif /* * These types for internal compilation */ typedef D3DRECT RLRectangle; typedef D3DVECTOR RLVector; typedef D3DRMVECTOR4D RLVector4d; typedef D3DRMMATRIX4D RLMatrix4d; typedef D3DRMQUATERNION RLQuaternion; typedef D3DRMBOX RLBox; typedef D3DRMWRAPCALLBACK RLWrapCallback; typedef D3DRMLIGHTTYPE RLLightType; #define RLLightAmbient D3DRMLIGHT_AMBIENT #define RLLightPoint D3DRMLIGHT_POINT #define RLLightSpot D3DRMLIGHT_SPOT #define RLLightDirectional D3DRMLIGHT_DIRECTIONAL #define RLLightParallelPoint D3DRMLIGHT_PARALLELPOINT typedef D3DRMSHADEMODE RLShadeMode; #define RLShadeFlat D3DRMSHADE_FLAT #define RLShadeGouraud D3DRMSHADE_GOURAUD #define RLShadePhong D3DRMSHADE_PHONG #define RLShadeMask D3DRMSHADE_MASK #define RLShadeMax D3DRMSHADE_MAX typedef D3DRMLIGHTMODE RLLightMode; #define RLLightOff D3DRMLIGHT_OFF #define RLLightOn D3DRMLIGHT_ON #define RLLightMask D3DRMLIGHT_MASK #define RLLightMax D3DRMLIGHT_MAX typedef D3DRMFILLMODE RLFillMode; #define RLFillPoints D3DRMFILL_POINTS #define RLFillWireframe D3DRMFILL_WIREFRAME #define RLFillSolid D3DRMFILL_SOLID #define RLFillMask D3DRMFILL_MASK #define RLFillMax D3DRMFILL_MAX typedef D3DRMRENDERQUALITY RLRenderQuality; #define RLRenderWireframe D3DRMRENDER_WIREFRAME #define RLRenderUnlitflat D3DRMRENDER_UNLITFLAT #define RLRenderFlat D3DRMRENDER_FLAT #define RLRenderGouraud D3DRMRENDER_GOURAUD #define RLRenderPhong D3DRMRENDER_PHONG typedef D3DRMLIGHTINGFREQUENCY RLLightingFrequency; #define RLLightNever D3DRMLIGHT_NEVER #define RLLightOnce D3DRMLIGHT_ONCE #define RLLightContinually D3DRMLIGHT_CONTINUALLY typedef D3DRMTEXTUREQUALITY RLTextureQuality; #define RLTextureNearest D3DRMTEXTURE_NEAREST #define RLTextureLinear D3DRMTEXTURE_LINEAR #define RLTextureMipNearest D3DRMTEXTURE_MIPNEAREST #define RLTextureMipLinear D3DRMTEXTURE_MIPLINEAR #define RLTextureLinearMipNearest D3DRMTEXTURE_LINEARMIPNEAREST #define RLTextureLinearMipLinear D3DRMTEXTURE_LINEARMIPLINEAR typedef D3DRMCOMBINETYPE RLCombineType; #define RLCombineReplace D3DRMCOMBINE_REPLACE #define RLCombineBefore D3DRMCOMBINE_BEFORE #define RLCombineAfter D3DRMCOMBINE_AFTER typedef D3DCOLORMODEL RLColorModel; #define RLColorRamp D3DCOLOR_MONO #define RLColorRGB D3DCOLOR_RGB typedef D3DRMPALETTEFLAGS RLPaletteFlags; #define RLPaletteFree D3DRMPALETTE_FREE #define RLPaletteReadOnly D3DRMPALETTE_READONLY #define RLPaletteReserved D3DRMPALETTE_RESERVED typedef D3DRMPALETTEENTRY RLPaletteEntry; typedef D3DRMIMAGE RLImage; typedef D3DRMWRAPTYPE RLWrapType; #define RLWrapFlat D3DRMWRAP_FLAT #define RLWrapCylinder D3DRMWRAP_CYLINDER #define RLWrapSphere D3DRMWRAP_SPHERE #define RLWrapChrome D3DRMWRAP_CHROME #define RLWrapSheet D3DRMWRAP_SHEET #define RLWrapBox D3DRMWRAP_BOX #define RLWireframeCull D3DRMWIREFRAME_CULL #define RLWireframeHiddenLine D3DRMWIREFRAME_HIDDENLINE typedef D3DRMPROJECTIONTYPE RLProjectionType; #define RLProjectPerspective D3DRMPROJECT_PERSPECTIVE #define RLProjectOrthographic D3DRMPROJECT_ORTHOGRAPHIC #define RLProjectRightHandPerspective D3DRMPROJECT_RIGHTHANDPERSPECTIVE #define RLProjectRightHandOrthographic D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC typedef D3DRMXOFFORMAT RLXOFFormat; #define RLXOFBinary D3DRMXOF_BINARY #define RLXOFCompressed D3DRMXOF_COMPRESSED #define RLXOFText D3DRMXOF_TEXT #define RLXOFSaveNormals D3DRMXOFSAVE_NORMALS #define RLXOFSaveTextureCoordinates D3DRMXOFSAVE_TEXTURECOORDINATES #define RLXOFSaveMaterials D3DRMXOFSAVE_MATERIALS #define RLXOFSaveTextureNames D3DRMXOFSAVE_TEXTURENAMES #define RLXOFSaveAll D3DRMXOFSAVE_ALL #define RLXOFSaveTemplates D3DRMXOFSAVE_TEMPLATES typedef D3DRMCOLORSOURCE RLColorSource; #define RLColorFromFace D3DRMCOLOR_FROMFACE #define RLColorFromVertex D3DRMCOLOR_FROMVERTEX typedef D3DRMFRAMECONSTRAINT RLFrameConstraint; #define RLConstrainZ D3DRMCONSTRAIN_Z #define RLConstrainY D3DRMCONSTRAIN_Y #define RLConstrainX D3DRMCONSTRAIN_X typedef D3DRMMATERIALMODE RLMaterialMode; #define RLMaterialFromMesh D3DRMMATERIAL_FROMMESH #define RLMaterialFromParent D3DRMMATERIAL_FROMPARENT #define RLMaterialFromFrame D3DRMMATERIAL_FROMFRAME typedef D3DRMFOGMODE RLFogMode; #define RLFogLinear D3DRMFOG_LINEAR #define RLFogExponential D3DRMFOG_EXPONENTIAL #define RLFogExponentialSquared D3DRMFOG_EXPONENTIALSQUARED #define RLAnimationOpen D3DRMANIMATION_OPEN #define RLAnimationClosed D3DRMANIMATION_CLOSED #define RLAnimationLinearPosition D3DRMANIMATION_LINEARPOSITION #define RLAnimationSplinePosition D3DRMANIMATION_SPLINEPOSITION #define RLAnimationScaleAndRotation D3DRMANIMATION_SCALEANDROTATION #define RLAnimationPosition D3DRMANIMATION_POSITION typedef D3DRMUSERVISUALREASON RLUserVisualReason; #define RLUserVisualCanSee D3DRMUSERVISUAL_CANSEE #define RLUserVisualRender D3DRMUSERVISUAL_RENDER typedef D3DRMMALLOCFUNCTION RLMallocFunction; typedef D3DRMREALLOCFUNCTION RLReallocFunction; typedef D3DRMFREEFUNCTION RLFreeFunction; typedef D3DRMMAPPING RLMapping, RLMappingFlag; static const RLMapping RLMapWrapU = 1; static const RLMapping RLMapWrapV = 2; static const RLMapping RLMapPerspCorrect = 4; typedef D3DRMVERTEX RLVertex; typedef D3DRMGROUPINDEX RLGroupIndex; static const RLGroupIndex RLAllGroups = -1; #define RLCreateColorRGB D3DRMCreateColorRGB #define RLCreateColorRGBA D3DRMCreateColorRGBA #define RLColorGetRed D3DRMColorGetRed #define RLColorGetGreen D3DRMColorGetGreen #define RLColorGetBlue D3DRMColorGetBlue #define RLColorGetAlpha D3DRMColorGetAlpha #define RLVectorAdd D3DRMVectorAdd #define RLVectorSubtract D3DRMVectorSubtract #define RLVectorReflect D3DRMVectorReflect #define RLVectorCrossProduct D3DRMVectorCrossProduct #define RLVectorDotProduct D3DRMVectorDotProduct #define RLVectorNormalize D3DRMVectorNormalize #define RLVectorNormalise D3DRMVectorNormalize #define RLVectorModulus D3DRMVectorModulus #define RLVectorRotate D3DRMVectorRotate #define RLVectorScale D3DRMVectorScale #define RLVectorRandom D3DRMVectorRandom #define RLQuaternionFromRotation D3DRMQuaternionFromRotation #define RLQuaternionMultiply D3DRMQuaternionMultiply #define RLQuaternionSlerp D3DRMQuaternionSlerp #define RLMatrixFromQuaternion D3DRMMatrixFromQuaternion #define RLQuaternionFromMatrix D3DRMQuaternionFromMatrix #endif /* BUILD_RLAPI */ //@@END_MSINTERNAL #if defined(__cplusplus) }; #endif #endif