xref: /reactos/sdk/include/psdk/d3drmdef.h (revision c2c66aff)
1 /*
2  * Copyright 2007,2010 Vijay Kiran Kamuju
3  * Copyright 2007 David ADAM
4  * Copyright 2010 Christian Costa
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #ifndef __D3DRMDEFS_H__
22 #define __D3DRMDEFS_H__
23 
24 #include <stddef.h>
25 #include <d3dtypes.h>
26 
27 #if defined(__cplusplus)
28 extern "C" {
29 #endif
30 
31 typedef struct _D3DRMVECTOR4D
32 {
33     D3DVALUE x;
34     D3DVALUE y;
35     D3DVALUE z;
36     D3DVALUE w;
37 } D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
38 
39 typedef D3DVALUE D3DRMMATRIX4D[4][4];
40 
41 typedef struct _D3DRMQUATERNION {
42     D3DVALUE s;
43     D3DVECTOR v;
44 } D3DRMQUATERNION, *LPD3DRMQUATERNION;
45 
46 typedef struct _D3DRMRAY {
47     D3DVECTOR dvDir;
48     D3DVECTOR dvPos;
49 } D3DRMRAY, *LPD3DRMRAY;
50 
51 typedef struct _D3DRMBOX {
52     D3DVECTOR min;
53     D3DVECTOR max;
54 } D3DRMBOX, *LPD3DRMBOX;
55 
56 typedef void (*D3DRMWRAPCALLBACK)(D3DVECTOR *vec, int *u, int *v, D3DVECTOR *a, D3DVECTOR *b, void *ctx);
57 
58 typedef enum _D3DRMLIGHTTYPE {
59     D3DRMLIGHT_AMBIENT,
60     D3DRMLIGHT_POINT,
61     D3DRMLIGHT_SPOT,
62     D3DRMLIGHT_DIRECTIONAL,
63     D3DRMLIGHT_PARALLELPOINT
64 } D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
65 
66 typedef enum _D3DRMSHADEMODE {
67     D3DRMSHADE_FLAT     = 0,
68     D3DRMSHADE_GOURAUD  = 1,
69     D3DRMSHADE_PHONG    = 2,
70     D3DRMSHADE_MASK     = 7,
71     D3DRMSHADE_MAX      = 8
72 } D3DRMSHADEMODE, *LPD3DRMSHADEMODE;
73 
74 typedef enum _D3DRMLIGHTMODE {
75     D3DRMLIGHT_OFF      = 0 * D3DRMSHADE_MAX,
76     D3DRMLIGHT_ON       = 1 * D3DRMSHADE_MAX,
77     D3DRMLIGHT_MASK     = 7 * D3DRMSHADE_MAX,
78     D3DRMLIGHT_MAX      = 8 * D3DRMSHADE_MAX
79 } D3DRMLIGHTMODE, *LPD3DRMLIGHTMODE;
80 
81 typedef enum _D3DRMFILLMODE {
82     D3DRMFILL_POINTS    = 0 * D3DRMLIGHT_MAX,
83     D3DRMFILL_WIREFRAME	= 1 * D3DRMLIGHT_MAX,
84     D3DRMFILL_SOLID     = 2 * D3DRMLIGHT_MAX,
85     D3DRMFILL_MASK      = 7 * D3DRMLIGHT_MAX,
86     D3DRMFILL_MAX       = 8 * D3DRMLIGHT_MAX
87 } D3DRMFILLMODE, *LPD3DRMFILLMODE;
88 
89 typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY;
90 
91 #define D3DRMRENDER_WIREFRAME   (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_WIREFRAME)
92 #define D3DRMRENDER_UNLITFLAT   (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_SOLID)
93 #define D3DRMRENDER_FLAT        (D3DRMSHADE_FLAT+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
94 #define D3DRMRENDER_GOURAUD     (D3DRMSHADE_GOURAUD+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
95 #define D3DRMRENDER_PHONG       (D3DRMSHADE_PHONG+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
96 
97 #define D3DRMRENDERMODE_BLENDEDTRANSPARENCY       1
98 #define D3DRMRENDERMODE_SORTEDTRANSPARENCY        2
99 #define D3DRMRENDERMODE_LIGHTINMODELSPACE         8
100 #define D3DRMRENDERMODE_VIEWDEPENDENTSPECULAR    16
101 #define D3DRMRENDERMODE_DISABLESORTEDALPHAZWRITE 32
102 
103 typedef enum _D3DRMTEXTUREQUALITY {
104     D3DRMTEXTURE_NEAREST,
105     D3DRMTEXTURE_LINEAR,
106     D3DRMTEXTURE_MIPNEAREST,
107     D3DRMTEXTURE_MIPLINEAR,
108     D3DRMTEXTURE_LINEARMIPNEAREST,
109     D3DRMTEXTURE_LINEARMIPLINEAR
110 } D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY;
111 
112 #define D3DRMTEXTURE_FORCERESIDENT          0x00000001
113 #define D3DRMTEXTURE_STATIC                 0x00000002
114 #define D3DRMTEXTURE_DOWNSAMPLEPOINT        0x00000004
115 #define D3DRMTEXTURE_DOWNSAMPLEBILINEAR	    0x00000008
116 #define D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH  0x00000010
117 #define D3DRMTEXTURE_DOWNSAMPLENONE         0x00000020
118 #define D3DRMTEXTURE_CHANGEDPIXELS          0x00000040
119 #define D3DRMTEXTURE_CHANGEDPALETTE         0x00000080
120 #define D3DRMTEXTURE_INVALIDATEONLY         0x00000100
121 
122 #define D3DRMSHADOW_TRUEALPHA               0x00000001
123 
124 typedef enum _D3DRMCOMBINETYPE {
125     D3DRMCOMBINE_REPLACE,
126     D3DRMCOMBINE_BEFORE,
127     D3DRMCOMBINE_AFTER
128 } D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
129 
130 typedef D3DCOLORMODEL D3DRMCOLORMODEL, *LPD3DRMCOLORMODEL;
131 
132 typedef enum _D3DRMPALETTEFLAGS
133 {
134     D3DRMPALETTE_FREE,
135     D3DRMPALETTE_READONLY,
136     D3DRMPALETTE_RESERVED
137 } D3DRMPALETTEFLAGS, *LPD3DRMPALETTEFLAGS;
138 
139 typedef struct _D3DRMPALETTEENTRY {
140     unsigned char red;
141     unsigned char green;
142     unsigned char blue;
143     unsigned char flags;
144 } D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
145 
146 typedef struct _D3DRMIMAGE {
147     int width;
148     int height;
149     int aspectx;
150     int aspecty;
151     int depth;
152     int rgb;
153     int bytes_per_line;
154     void* buffer1;
155     void* buffer2;
156     ULONG red_mask;
157     ULONG green_mask;
158     ULONG blue_mask;
159     ULONG alpha_mask;
160     int palette_size;
161     D3DRMPALETTEENTRY* palette;
162 } D3DRMIMAGE, *LPD3DRMIMAGE;
163 
164 typedef enum _D3DRMWRAPTYPE {
165     D3DRMWRAP_FLAT,
166     D3DRMWRAP_CYLINDER,
167     D3DRMWRAP_SPHERE,
168     D3DRMWRAP_CHROME,
169     D3DRMWRAP_SHEET,
170     D3DRMWRAP_BOX
171 } D3DRMWRAPTYPE, *LPD3DRMWRAPTYPE;
172 
173 #define D3DRMWIREFRAME_CULL             1
174 #define D3DRMWIREFRAME_HIDDENLINE       2
175 
176 typedef enum _D3DRMPROJECTIONTYPE
177 {
178     D3DRMPROJECT_PERSPECTIVE,
179     D3DRMPROJECT_ORTHOGRAPHIC,
180     D3DRMPROJECT_RIGHTHANDPERSPECTIVE,
181     D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC
182 } D3DRMPROJECTIONTYPE, *LPD3DRMPROJECTIONTYPE;
183 
184 #define D3DRMOPTIONS_LEFTHANDED  0x00000001
185 #define D3DRMOPTIONS_RIGHTHANDED 0x00000002
186 
187 typedef enum _D3DRMXOFFORMAT {
188     D3DRMXOF_BINARY,
189     D3DRMXOF_COMPRESSED,
190     D3DRMXOF_TEXT
191 } D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
192 
193 typedef DWORD D3DRMSAVEOPTIONS;
194 #define D3DRMXOFSAVE_NORMALS             1
195 #define D3DRMXOFSAVE_TEXTURECOORDINATES  2
196 #define D3DRMXOFSAVE_MATERIALS           4
197 #define D3DRMXOFSAVE_TEXTURENAMES        8
198 #define D3DRMXOFSAVE_ALL                15
199 #define D3DRMXOFSAVE_TEMPLATES          16
200 #define D3DRMXOFSAVE_TEXTURETOPOLOGY    32
201 
202 typedef enum _D3DRMCOLORSOURCE {
203     D3DRMCOLOR_FROMFACE,
204     D3DRMCOLOR_FROMVERTEX
205 } D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
206 
207 typedef enum _D3DRMFRAMECONSTRAINT {
208     D3DRMCONSTRAIN_Z,
209     D3DRMCONSTRAIN_Y,
210     D3DRMCONSTRAIN_X
211 } D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
212 
213 typedef enum _D3DRMMATERIALMODE {
214     D3DRMMATERIAL_FROMMESH,
215     D3DRMMATERIAL_FROMPARENT,
216     D3DRMMATERIAL_FROMFRAME
217 } D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
218 
219 typedef enum _D3DRMFOGMODE {
220     D3DRMFOG_LINEAR,
221     D3DRMFOG_EXPONENTIAL,
222     D3DRMFOG_EXPONENTIALSQUARED
223 } D3DRMFOGMODE, *LPD3DRMFOGMODE;
224 
225 typedef enum _D3DRMZBUFFERMODE {
226     D3DRMZBUFFER_FROMPARENT,
227     D3DRMZBUFFER_ENABLE,
228     D3DRMZBUFFER_DISABLE
229 } D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
230 
231 typedef enum _D3DRMSORTMODE {
232     D3DRMSORT_FROMPARENT,
233     D3DRMSORT_NONE,
234     D3DRMSORT_FRONTTOBACK,
235     D3DRMSORT_BACKTOFRONT
236 } D3DRMSORTMODE, *LPD3DRMSORTMODE;
237 
238 typedef struct _D3DRMMATERIALOVERRIDE {
239     DWORD         dwSize;
240     DWORD         dwFlags;
241     D3DCOLORVALUE dcDiffuse;
242     D3DCOLORVALUE dcAmbient;
243     D3DCOLORVALUE dcEmissive;
244     D3DCOLORVALUE dcSpecular;
245     D3DVALUE      dvPower;
246     IUnknown *lpD3DRMTex;
247 } D3DRMMATERIALOVERRIDE, *LPD3DRMMATERIALOVERRIDE;
248 
249 #define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAONLY     0x00000001
250 #define D3DRMMATERIALOVERRIDE_DIFFUSE_RGBONLY       0x00000002
251 #define D3DRMMATERIALOVERRIDE_DIFFUSE               0x00000003
252 #define D3DRMMATERIALOVERRIDE_AMBIENT               0x00000004
253 #define D3DRMMATERIALOVERRIDE_EMISSIVE              0x00000008
254 #define D3DRMMATERIALOVERRIDE_SPECULAR              0x00000010
255 #define D3DRMMATERIALOVERRIDE_POWER                 0x00000020
256 #define D3DRMMATERIALOVERRIDE_TEXTURE               0x00000040
257 #define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAMULTIPLY 0x00000080
258 #define D3DRMMATERIALOVERRIDE_ALL                   0x000000FF
259 
260 #define D3DRMFPTF_ALPHA                             0x00000001
261 #define D3DRMFPTF_NOALPHA                           0x00000002
262 #define D3DRMFPTF_PALETTIZED                        0x00000004
263 #define D3DRMFPTF_NOTPALETTIZED                     0x00000008
264 
265 #define D3DRMSTATECHANGE_UPDATEONLY                0x000000001
266 #define D3DRMSTATECHANGE_VOLATILE                  0x000000002
267 #define D3DRMSTATECHANGE_NONVOLATILE               0x000000004
268 #define D3DRMSTATECHANGE_RENDER                    0x000000020
269 #define D3DRMSTATECHANGE_LIGHT                     0x000000040
270 
271 #define D3DRMDEVICE_NOZBUFFER           0x00000001
272 
273 #define D3DRMCALLBACK_PREORDER		0
274 #define D3DRMCALLBACK_POSTORDER		1
275 
276 #define D3DRMRAYPICK_ONLYBOUNDINGBOXES          0x01
277 #define D3DRMRAYPICK_IGNOREFURTHERPRIMITIVES    0x02
278 #define D3DRMRAYPICK_INTERPOLATEUV              0x04
279 #define D3DRMRAYPICK_INTERPOLATECOLOR           0x08
280 #define D3DRMRAYPICK_INTERPOLATENORMAL          0x10
281 
282 #define D3DRMADDFACES_VERTICESONLY              1
283 
284 #define D3DRMGENERATENORMALS_PRECOMPACT         1
285 #define D3DRMGENERATENORMALS_USECREASEANGLE     2
286 
287 #define D3DRMMESHBUILDER_DIRECTPARENT           1
288 #define D3DRMMESHBUILDER_ROOTMESH               2
289 
290 #define D3DRMMESHBUILDER_RENDERENABLE   0x00000001
291 #define D3DRMMESHBUILDER_PICKENABLE     0x00000002
292 
293 #define D3DRMADDMESHBUILDER_DONTCOPYAPPDATA     1
294 #define D3DRMADDMESHBUILDER_FLATTENSUBMESHES    2
295 #define D3DRMADDMESHBUILDER_NOSUBMESHES         4
296 
297 #define D3DRMMESHBUILDERAGE_GEOMETRY    0x00000001
298 #define D3DRMMESHBUILDERAGE_MATERIALS   0x00000002
299 #define D3DRMMESHBUILDERAGE_TEXTURES    0x00000004
300 
301 #define D3DRMFVF_TYPE                   0x00000001
302 #define D3DRMFVF_NORMAL                 0x00000002
303 #define D3DRMFVF_COLOR                  0x00000004
304 #define D3DRMFVF_TEXTURECOORDS          0x00000008
305 
306 #define D3DRMVERTEX_STRIP               0x00000001
307 #define D3DRMVERTEX_FAN                 0x00000002
308 #define D3DRMVERTEX_LIST                0x00000004
309 
310 #define D3DRMCLEAR_TARGET               0x00000001
311 #define D3DRMCLEAR_ZBUFFER              0x00000002
312 #define D3DRMCLEAR_DIRTYRECTS           0x00000004
313 #define D3DRMCLEAR_ALL                  (D3DRMCLEAR_TARGET | D3DRMCLEAR_ZBUFFER | D3DRMCLEAR_DIRTYRECTS)
314 
315 #define D3DRMFOGMETHOD_VERTEX           0x00000001
316 #define D3DRMFOGMETHOD_TABLE            0x00000002
317 #define D3DRMFOGMETHOD_ANY              0x00000004
318 
319 #define D3DRMFRAME_RENDERENABLE         0x00000001
320 #define D3DRMFRAME_PICKENABLE           0x00000002
321 
322 typedef DWORD D3DRMANIMATIONOPTIONS;
323 #define D3DRMANIMATION_OPEN             0x00000001
324 #define D3DRMANIMATION_CLOSED           0x00000002
325 #define D3DRMANIMATION_LINEARPOSITION   0x00000004
326 #define D3DRMANIMATION_SPLINEPOSITION   0x00000008
327 #define D3DRMANIMATION_SCALEANDROTATION 0x00000010
328 #define D3DRMANIMATION_POSITION         0x00000020
329 
330 typedef DWORD D3DRMINTERPOLATIONOPTIONS;
331 #define D3DRMINTERPOLATION_OPEN         0x0001
332 #define D3DRMINTERPOLATION_CLOSED       0x0002
333 #define D3DRMINTERPOLATION_NEAREST      0x0100
334 #define D3DRMINTERPOLATION_LINEAR       0x0004
335 #define D3DRMINTERPOLATION_SPLINE       0x0008
336 #define D3DRMINTERPOLATION_VERTEXCOLOR  0x0040
337 #define D3DRMINTERPOLATION_SLERPNORMALS 0x0080
338 
339 typedef DWORD D3DRMLOADOPTIONS;
340 
341 #define D3DRMLOAD_FROMFILE             0x000L
342 #define D3DRMLOAD_FROMRESOURCE         0x001L
343 #define D3DRMLOAD_FROMMEMORY           0x002L
344 #define D3DRMLOAD_FROMSTREAM           0x004L
345 #define D3DRMLOAD_FROMURL              0x008L
346 
347 #define D3DRMLOAD_BYNAME               0x010L
348 #define D3DRMLOAD_BYPOSITION           0x020L
349 #define D3DRMLOAD_BYGUID               0x040L
350 #define D3DRMLOAD_FIRST                0x080L
351 
352 #define D3DRMLOAD_INSTANCEBYREFERENCE  0x100L
353 #define D3DRMLOAD_INSTANCEBYCOPYING    0x200L
354 
355 #define D3DRMLOAD_ASYNCHRONOUS         0x400L
356 
357 typedef struct _D3DRMLOADRESOURCE
358 {
359     HMODULE hModule;
360     const char *lpName;
361     const char *lpType;
362 } D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
363 
364 typedef struct _D3DRMLOADMEMORY
365 {
366     void *lpMemory;
367     DWORD dSize;
368 } D3DRMLOADMEMORY, *LPD3DRMLOADMEMORY;
369 
370 #define D3DRMPMESHSTATUS_VALID            0x01
371 #define D3DRMPMESHSTATUS_INTERRUPTED      0x02
372 #define D3DRMPMESHSTATUS_BASEMESHCOMPLETE 0x04
373 #define D3DRMPMESHSTATUS_COMPLETE         0x08
374 #define D3DRMPMESHSTATUS_RENDERABLE       0x10
375 
376 #define D3DRMPMESHEVENT_BASEMESH          0x01
377 #define D3DRMPMESHEVENT_COMPLETE          0x02
378 
379 typedef struct _D3DRMPMESHLOADSTATUS {
380     DWORD dwSize;
381     DWORD dwPMeshSize;
382     DWORD dwBaseMeshSize;
383     DWORD dwBytesLoaded;
384     DWORD dwVerticesLoaded;
385     DWORD dwFacesLoaded;
386     HRESULT dwLoadResult;
387     DWORD dwFlags;
388 } D3DRMPMESHLOADSTATUS, *LPD3DRMPMESHLOADSTATUS;
389 
390 typedef enum _D3DRMUSERVISUALREASON {
391     D3DRMUSERVISUAL_CANSEE,
392     D3DRMUSERVISUAL_RENDER
393 } D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
394 
395 typedef struct _D3DRMANIMATIONKEY
396 {
397     DWORD dwSize;
398     DWORD dwKeyType;
399     D3DVALUE dvTime;
400     DWORD dwID;
401 #if !defined(__cplusplus) || !defined(D3D_OVERLOADS)
402     union
403     {
404 	D3DRMQUATERNION dqRotateKey;
405 	D3DVECTOR dvScaleKey;
406 	D3DVECTOR dvPositionKey;
407     } DUMMYUNIONNAME;
408 #else
409     D3DVALUE dvK[4];
410 #endif
411 } D3DRMANIMATIONKEY;
412 typedef D3DRMANIMATIONKEY *LPD3DRMANIMATIONKEY;
413 
414 #define D3DRMANIMATION_ROTATEKEY   0x01
415 #define D3DRMANIMATION_SCALEKEY    0x02
416 #define D3DRMANIMATION_POSITIONKEY 0x03
417 
418 typedef DWORD D3DRMMAPPING, D3DRMMAPPINGFLAG, *LPD3DRMMAPPING;
419 static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPU        = 1;
420 static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPV        = 2;
421 static const D3DRMMAPPINGFLAG D3DRMMAP_PERSPCORRECT = 4;
422 
423 typedef struct _D3DRMVERTEX {
424     D3DVECTOR position;
425     D3DVECTOR normal;
426     D3DVALUE  tu;
427     D3DVALUE  tv;
428     D3DCOLOR  color;
429 } D3DRMVERTEX, *LPD3DRMVERTEX;
430 
431 typedef LONG D3DRMGROUPINDEX;
432 static const D3DRMGROUPINDEX D3DRMGROUP_ALLGROUPS = -1;
433 
434 void WINAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D m, D3DRMQUATERNION *q);
435 
436 D3DRMQUATERNION * WINAPI D3DRMQuaternionFromRotation(D3DRMQUATERNION *x, D3DVECTOR *axis, D3DVALUE theta);
437 D3DRMQUATERNION * WINAPI D3DRMQuaternionMultiply(D3DRMQUATERNION *ret, D3DRMQUATERNION *x, D3DRMQUATERNION *y);
438 D3DRMQUATERNION * WINAPI D3DRMQuaternionSlerp(D3DRMQUATERNION *ret,
439         D3DRMQUATERNION *x, D3DRMQUATERNION *y, D3DVALUE alpha);
440 
441 D3DVECTOR * WINAPI D3DRMVectorAdd(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
442 D3DVECTOR * WINAPI D3DRMVectorCrossProduct(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
443 D3DVALUE WINAPI D3DRMVectorDotProduct(D3DVECTOR *x, D3DVECTOR *y);
444 D3DVECTOR * WINAPI D3DRMVectorNormalize(D3DVECTOR *x);
445 
446 #define D3DRMVectorNormalise D3DRMVectorNormalize
447 
448 D3DVALUE WINAPI D3DRMVectorModulus(D3DVECTOR *x);
449 D3DVECTOR * WINAPI D3DRMVectorRandom(D3DVECTOR *ret);
450 D3DVECTOR * WINAPI D3DRMVectorRotate(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *axis, D3DVALUE theta);
451 D3DVECTOR * WINAPI D3DRMVectorReflect(D3DVECTOR *ret, D3DVECTOR *ray, D3DVECTOR *normal);
452 D3DVECTOR * WINAPI D3DRMVectorScale(D3DVECTOR *ret, D3DVECTOR *x, D3DVALUE scale);
453 D3DVECTOR * WINAPI D3DRMVectorSubtract(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
454 
455 D3DCOLOR WINAPI D3DRMCreateColorRGB(D3DVALUE, D3DVALUE, D3DVALUE);
456 D3DCOLOR WINAPI D3DRMCreateColorRGBA(D3DVALUE, D3DVALUE, D3DVALUE, D3DVALUE);
457 D3DVALUE WINAPI D3DRMColorGetAlpha(D3DCOLOR);
458 D3DVALUE WINAPI D3DRMColorGetBlue(D3DCOLOR);
459 D3DVALUE WINAPI D3DRMColorGetGreen(D3DCOLOR);
460 D3DVALUE WINAPI D3DRMColorGetRed(D3DCOLOR);
461 
462 #if defined(__cplusplus)
463 }
464 #endif
465 
466 #endif
467