d3drmdef.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  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. #ifndef __D3DRMDEFS_H__
  21. #define __D3DRMDEFS_H__
  22. #include <stddef.h>
  23. #include <d3dtypes.h>
  24. #if defined(__cplusplus)
  25. extern "C" {
  26. #endif
  27. typedef struct _D3DRMVECTOR4D
  28. {
  29. D3DVALUE x;
  30. D3DVALUE y;
  31. D3DVALUE z;
  32. D3DVALUE w;
  33. } D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
  34. typedef D3DVALUE D3DRMMATRIX4D[4][4];
  35. typedef struct _D3DRMQUATERNION {
  36. D3DVALUE s;
  37. D3DVECTOR v;
  38. } D3DRMQUATERNION, *LPD3DRMQUATERNION;
  39. typedef struct _D3DRMRAY {
  40. D3DVECTOR dvDir;
  41. D3DVECTOR dvPos;
  42. } D3DRMRAY, *LPD3DRMRAY;
  43. typedef struct _D3DRMBOX {
  44. D3DVECTOR min;
  45. D3DVECTOR max;
  46. } D3DRMBOX, *LPD3DRMBOX;
  47. typedef void (*D3DRMWRAPCALLBACK)(D3DVECTOR *vec, int *u, int *v, D3DVECTOR *a, D3DVECTOR *b, void *ctx);
  48. typedef enum _D3DRMLIGHTTYPE {
  49. D3DRMLIGHT_AMBIENT,
  50. D3DRMLIGHT_POINT,
  51. D3DRMLIGHT_SPOT,
  52. D3DRMLIGHT_DIRECTIONAL,
  53. D3DRMLIGHT_PARALLELPOINT
  54. } D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
  55. typedef enum _D3DRMSHADEMODE {
  56. D3DRMSHADE_FLAT = 0,
  57. D3DRMSHADE_GOURAUD = 1,
  58. D3DRMSHADE_PHONG = 2,
  59. D3DRMSHADE_MASK = 7,
  60. D3DRMSHADE_MAX = 8
  61. } D3DRMSHADEMODE, *LPD3DRMSHADEMODE;
  62. typedef enum _D3DRMLIGHTMODE {
  63. D3DRMLIGHT_OFF = 0 * D3DRMSHADE_MAX,
  64. D3DRMLIGHT_ON = 1 * D3DRMSHADE_MAX,
  65. D3DRMLIGHT_MASK = 7 * D3DRMSHADE_MAX,
  66. D3DRMLIGHT_MAX = 8 * D3DRMSHADE_MAX
  67. } D3DRMLIGHTMODE, *LPD3DRMLIGHTMODE;
  68. typedef enum _D3DRMFILLMODE {
  69. D3DRMFILL_POINTS = 0 * D3DRMLIGHT_MAX,
  70. D3DRMFILL_WIREFRAME = 1 * D3DRMLIGHT_MAX,
  71. D3DRMFILL_SOLID = 2 * D3DRMLIGHT_MAX,
  72. D3DRMFILL_MASK = 7 * D3DRMLIGHT_MAX,
  73. D3DRMFILL_MAX = 8 * D3DRMLIGHT_MAX
  74. } D3DRMFILLMODE, *LPD3DRMFILLMODE;
  75. typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY;
  76. #define D3DRMRENDER_WIREFRAME (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_WIREFRAME)
  77. #define D3DRMRENDER_UNLITFLAT (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_SOLID)
  78. #define D3DRMRENDER_FLAT (D3DRMSHADE_FLAT+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
  79. #define D3DRMRENDER_GOURAUD (D3DRMSHADE_GOURAUD+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
  80. #define D3DRMRENDER_PHONG (D3DRMSHADE_PHONG+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
  81. #define D3DRMRENDERMODE_BLENDEDTRANSPARENCY 1
  82. #define D3DRMRENDERMODE_SORTEDTRANSPARENCY 2
  83. #define D3DRMRENDERMODE_LIGHTINMODELSPACE 8
  84. #define D3DRMRENDERMODE_VIEWDEPENDENTSPECULAR 16
  85. #define D3DRMRENDERMODE_DISABLESORTEDALPHAZWRITE 32
  86. typedef enum _D3DRMTEXTUREQUALITY {
  87. D3DRMTEXTURE_NEAREST,
  88. D3DRMTEXTURE_LINEAR,
  89. D3DRMTEXTURE_MIPNEAREST,
  90. D3DRMTEXTURE_MIPLINEAR,
  91. D3DRMTEXTURE_LINEARMIPNEAREST,
  92. D3DRMTEXTURE_LINEARMIPLINEAR
  93. } D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY;
  94. #define D3DRMTEXTURE_FORCERESIDENT 0x00000001
  95. #define D3DRMTEXTURE_STATIC 0x00000002
  96. #define D3DRMTEXTURE_DOWNSAMPLEPOINT 0x00000004
  97. #define D3DRMTEXTURE_DOWNSAMPLEBILINEAR 0x00000008
  98. #define D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH 0x00000010
  99. #define D3DRMTEXTURE_DOWNSAMPLENONE 0x00000020
  100. #define D3DRMTEXTURE_CHANGEDPIXELS 0x00000040
  101. #define D3DRMTEXTURE_CHANGEDPALETTE 0x00000080
  102. #define D3DRMTEXTURE_INVALIDATEONLY 0x00000100
  103. #define D3DRMSHADOW_TRUEALPHA 0x00000001
  104. typedef enum _D3DRMCOMBINETYPE {
  105. D3DRMCOMBINE_REPLACE,
  106. D3DRMCOMBINE_BEFORE,
  107. D3DRMCOMBINE_AFTER
  108. } D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
  109. typedef D3DCOLORMODEL D3DRMCOLORMODEL, *LPD3DRMCOLORMODEL;
  110. typedef enum _D3DRMPALETTEFLAGS
  111. {
  112. D3DRMPALETTE_FREE,
  113. D3DRMPALETTE_READONLY,
  114. D3DRMPALETTE_RESERVED
  115. } D3DRMPALETTEFLAGS, *LPD3DRMPALETTEFLAGS;
  116. typedef struct _D3DRMPALETTEENTRY {
  117. unsigned char red;
  118. unsigned char green;
  119. unsigned char blue;
  120. unsigned char flags;
  121. } D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
  122. typedef struct _D3DRMIMAGE {
  123. int width;
  124. int height;
  125. int aspectx;
  126. int aspecty;
  127. int depth;
  128. int rgb;
  129. int bytes_per_line;
  130. void* buffer1;
  131. void* buffer2;
  132. ULONG red_mask;
  133. ULONG green_mask;
  134. ULONG blue_mask;
  135. ULONG alpha_mask;
  136. int palette_size;
  137. D3DRMPALETTEENTRY* palette;
  138. } D3DRMIMAGE, *LPD3DRMIMAGE;
  139. typedef enum _D3DRMWRAPTYPE {
  140. D3DRMWRAP_FLAT,
  141. D3DRMWRAP_CYLINDER,
  142. D3DRMWRAP_SPHERE,
  143. D3DRMWRAP_CHROME,
  144. D3DRMWRAP_SHEET,
  145. D3DRMWRAP_BOX
  146. } D3DRMWRAPTYPE, *LPD3DRMWRAPTYPE;
  147. #define D3DRMWIREFRAME_CULL 1
  148. #define D3DRMWIREFRAME_HIDDENLINE 2
  149. typedef enum _D3DRMPROJECTIONTYPE
  150. {
  151. D3DRMPROJECT_PERSPECTIVE,
  152. D3DRMPROJECT_ORTHOGRAPHIC,
  153. D3DRMPROJECT_RIGHTHANDPERSPECTIVE,
  154. D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC
  155. } D3DRMPROJECTIONTYPE, *LPD3DRMPROJECTIONTYPE;
  156. #define D3DRMOPTIONS_LEFTHANDED 0x00000001
  157. #define D3DRMOPTIONS_RIGHTHANDED 0x00000002
  158. typedef enum _D3DRMXOFFORMAT {
  159. D3DRMXOF_BINARY,
  160. D3DRMXOF_COMPRESSED,
  161. D3DRMXOF_TEXT
  162. } D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
  163. typedef DWORD D3DRMSAVEOPTIONS;
  164. #define D3DRMXOFSAVE_NORMALS 1
  165. #define D3DRMXOFSAVE_TEXTURECOORDINATES 2
  166. #define D3DRMXOFSAVE_MATERIALS 4
  167. #define D3DRMXOFSAVE_TEXTURENAMES 8
  168. #define D3DRMXOFSAVE_ALL 15
  169. #define D3DRMXOFSAVE_TEMPLATES 16
  170. #define D3DRMXOFSAVE_TEXTURETOPOLOGY 32
  171. typedef enum _D3DRMCOLORSOURCE {
  172. D3DRMCOLOR_FROMFACE,
  173. D3DRMCOLOR_FROMVERTEX
  174. } D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
  175. typedef enum _D3DRMFRAMECONSTRAINT {
  176. D3DRMCONSTRAIN_Z,
  177. D3DRMCONSTRAIN_Y,
  178. D3DRMCONSTRAIN_X
  179. } D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
  180. typedef enum _D3DRMMATERIALMODE {
  181. D3DRMMATERIAL_FROMMESH,
  182. D3DRMMATERIAL_FROMPARENT,
  183. D3DRMMATERIAL_FROMFRAME
  184. } D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
  185. typedef enum _D3DRMFOGMODE {
  186. D3DRMFOG_LINEAR,
  187. D3DRMFOG_EXPONENTIAL,
  188. D3DRMFOG_EXPONENTIALSQUARED
  189. } D3DRMFOGMODE, *LPD3DRMFOGMODE;
  190. typedef enum _D3DRMZBUFFERMODE {
  191. D3DRMZBUFFER_FROMPARENT,
  192. D3DRMZBUFFER_ENABLE,
  193. D3DRMZBUFFER_DISABLE
  194. } D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
  195. typedef enum _D3DRMSORTMODE {
  196. D3DRMSORT_FROMPARENT,
  197. D3DRMSORT_NONE,
  198. D3DRMSORT_FRONTTOBACK,
  199. D3DRMSORT_BACKTOFRONT
  200. } D3DRMSORTMODE, *LPD3DRMSORTMODE;
  201. typedef struct _D3DRMMATERIALOVERRIDE {
  202. DWORD dwSize;
  203. DWORD dwFlags;
  204. D3DCOLORVALUE dcDiffuse;
  205. D3DCOLORVALUE dcAmbient;
  206. D3DCOLORVALUE dcEmissive;
  207. D3DCOLORVALUE dcSpecular;
  208. D3DVALUE dvPower;
  209. IUnknown *lpD3DRMTex;
  210. } D3DRMMATERIALOVERRIDE, *LPD3DRMMATERIALOVERRIDE;
  211. #define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAONLY 0x00000001
  212. #define D3DRMMATERIALOVERRIDE_DIFFUSE_RGBONLY 0x00000002
  213. #define D3DRMMATERIALOVERRIDE_DIFFUSE 0x00000003
  214. #define D3DRMMATERIALOVERRIDE_AMBIENT 0x00000004
  215. #define D3DRMMATERIALOVERRIDE_EMISSIVE 0x00000008
  216. #define D3DRMMATERIALOVERRIDE_SPECULAR 0x00000010
  217. #define D3DRMMATERIALOVERRIDE_POWER 0x00000020
  218. #define D3DRMMATERIALOVERRIDE_TEXTURE 0x00000040
  219. #define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAMULTIPLY 0x00000080
  220. #define D3DRMMATERIALOVERRIDE_ALL 0x000000FF
  221. #define D3DRMFPTF_ALPHA 0x00000001
  222. #define D3DRMFPTF_NOALPHA 0x00000002
  223. #define D3DRMFPTF_PALETTIZED 0x00000004
  224. #define D3DRMFPTF_NOTPALETTIZED 0x00000008
  225. #define D3DRMSTATECHANGE_UPDATEONLY 0x000000001
  226. #define D3DRMSTATECHANGE_VOLATILE 0x000000002
  227. #define D3DRMSTATECHANGE_NONVOLATILE 0x000000004
  228. #define D3DRMSTATECHANGE_RENDER 0x000000020
  229. #define D3DRMSTATECHANGE_LIGHT 0x000000040
  230. #define D3DRMDEVICE_NOZBUFFER 0x00000001
  231. #define D3DRMCALLBACK_PREORDER 0
  232. #define D3DRMCALLBACK_POSTORDER 1
  233. #define D3DRMRAYPICK_ONLYBOUNDINGBOXES 0x01
  234. #define D3DRMRAYPICK_IGNOREFURTHERPRIMITIVES 0x02
  235. #define D3DRMRAYPICK_INTERPOLATEUV 0x04
  236. #define D3DRMRAYPICK_INTERPOLATECOLOR 0x08
  237. #define D3DRMRAYPICK_INTERPOLATENORMAL 0x10
  238. #define D3DRMADDFACES_VERTICESONLY 1
  239. #define D3DRMGENERATENORMALS_PRECOMPACT 1
  240. #define D3DRMGENERATENORMALS_USECREASEANGLE 2
  241. #define D3DRMMESHBUILDER_DIRECTPARENT 1
  242. #define D3DRMMESHBUILDER_ROOTMESH 2
  243. #define D3DRMMESHBUILDER_RENDERENABLE 0x00000001
  244. #define D3DRMMESHBUILDER_PICKENABLE 0x00000002
  245. #define D3DRMADDMESHBUILDER_DONTCOPYAPPDATA 1
  246. #define D3DRMADDMESHBUILDER_FLATTENSUBMESHES 2
  247. #define D3DRMADDMESHBUILDER_NOSUBMESHES 4
  248. #define D3DRMMESHBUILDERAGE_GEOMETRY 0x00000001
  249. #define D3DRMMESHBUILDERAGE_MATERIALS 0x00000002
  250. #define D3DRMMESHBUILDERAGE_TEXTURES 0x00000004
  251. #define D3DRMFVF_TYPE 0x00000001
  252. #define D3DRMFVF_NORMAL 0x00000002
  253. #define D3DRMFVF_COLOR 0x00000004
  254. #define D3DRMFVF_TEXTURECOORDS 0x00000008
  255. #define D3DRMVERTEX_STRIP 0x00000001
  256. #define D3DRMVERTEX_FAN 0x00000002
  257. #define D3DRMVERTEX_LIST 0x00000004
  258. #define D3DRMCLEAR_TARGET 0x00000001
  259. #define D3DRMCLEAR_ZBUFFER 0x00000002
  260. #define D3DRMCLEAR_DIRTYRECTS 0x00000004
  261. #define D3DRMCLEAR_ALL (D3DRMCLEAR_TARGET | D3DRMCLEAR_ZBUFFER | D3DRMCLEAR_DIRTYRECTS)
  262. #define D3DRMFOGMETHOD_VERTEX 0x00000001
  263. #define D3DRMFOGMETHOD_TABLE 0x00000002
  264. #define D3DRMFOGMETHOD_ANY 0x00000004
  265. #define D3DRMFRAME_RENDERENABLE 0x00000001
  266. #define D3DRMFRAME_PICKENABLE 0x00000002
  267. typedef DWORD D3DRMANIMATIONOPTIONS;
  268. #define D3DRMANIMATION_OPEN 0x00000001
  269. #define D3DRMANIMATION_CLOSED 0x00000002
  270. #define D3DRMANIMATION_LINEARPOSITION 0x00000004
  271. #define D3DRMANIMATION_SPLINEPOSITION 0x00000008
  272. #define D3DRMANIMATION_SCALEANDROTATION 0x00000010
  273. #define D3DRMANIMATION_POSITION 0x00000020
  274. typedef DWORD D3DRMINTERPOLATIONOPTIONS;
  275. #define D3DRMINTERPOLATION_OPEN 0x0001
  276. #define D3DRMINTERPOLATION_CLOSED 0x0002
  277. #define D3DRMINTERPOLATION_NEAREST 0x0100
  278. #define D3DRMINTERPOLATION_LINEAR 0x0004
  279. #define D3DRMINTERPOLATION_SPLINE 0x0008
  280. #define D3DRMINTERPOLATION_VERTEXCOLOR 0x0040
  281. #define D3DRMINTERPOLATION_SLERPNORMALS 0x0080
  282. typedef DWORD D3DRMLOADOPTIONS;
  283. #define D3DRMLOAD_FROMFILE __MSABI_LONG(0x000)
  284. #define D3DRMLOAD_FROMRESOURCE __MSABI_LONG(0x001)
  285. #define D3DRMLOAD_FROMMEMORY __MSABI_LONG(0x002)
  286. #define D3DRMLOAD_FROMSTREAM __MSABI_LONG(0x004)
  287. #define D3DRMLOAD_FROMURL __MSABI_LONG(0x008)
  288. #define D3DRMLOAD_BYNAME __MSABI_LONG(0x010)
  289. #define D3DRMLOAD_BYPOSITION __MSABI_LONG(0x020)
  290. #define D3DRMLOAD_BYGUID __MSABI_LONG(0x040)
  291. #define D3DRMLOAD_FIRST __MSABI_LONG(0x080)
  292. #define D3DRMLOAD_INSTANCEBYREFERENCE __MSABI_LONG(0x100)
  293. #define D3DRMLOAD_INSTANCEBYCOPYING __MSABI_LONG(0x200)
  294. #define D3DRMLOAD_ASYNCHRONOUS __MSABI_LONG(0x400)
  295. typedef struct _D3DRMLOADRESOURCE
  296. {
  297. HMODULE hModule;
  298. const char *lpName;
  299. const char *lpType;
  300. } D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
  301. typedef struct _D3DRMLOADMEMORY
  302. {
  303. void *lpMemory;
  304. DWORD dSize;
  305. } D3DRMLOADMEMORY, *LPD3DRMLOADMEMORY;
  306. #define D3DRMPMESHSTATUS_VALID 0x01
  307. #define D3DRMPMESHSTATUS_INTERRUPTED 0x02
  308. #define D3DRMPMESHSTATUS_BASEMESHCOMPLETE 0x04
  309. #define D3DRMPMESHSTATUS_COMPLETE 0x08
  310. #define D3DRMPMESHSTATUS_RENDERABLE 0x10
  311. #define D3DRMPMESHEVENT_BASEMESH 0x01
  312. #define D3DRMPMESHEVENT_COMPLETE 0x02
  313. typedef struct _D3DRMPMESHLOADSTATUS {
  314. DWORD dwSize;
  315. DWORD dwPMeshSize;
  316. DWORD dwBaseMeshSize;
  317. DWORD dwBytesLoaded;
  318. DWORD dwVerticesLoaded;
  319. DWORD dwFacesLoaded;
  320. HRESULT dwLoadResult;
  321. DWORD dwFlags;
  322. } D3DRMPMESHLOADSTATUS, *LPD3DRMPMESHLOADSTATUS;
  323. typedef enum _D3DRMUSERVISUALREASON {
  324. D3DRMUSERVISUAL_CANSEE,
  325. D3DRMUSERVISUAL_RENDER
  326. } D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
  327. typedef struct _D3DRMANIMATIONKEY
  328. {
  329. DWORD dwSize;
  330. DWORD dwKeyType;
  331. D3DVALUE dvTime;
  332. DWORD dwID;
  333. #if !defined(__cplusplus) || !defined(D3D_OVERLOADS)
  334. union
  335. {
  336. D3DRMQUATERNION dqRotateKey;
  337. D3DVECTOR dvScaleKey;
  338. D3DVECTOR dvPositionKey;
  339. } DUMMYUNIONNAME;
  340. #else
  341. D3DVALUE dvK[4];
  342. #endif
  343. } D3DRMANIMATIONKEY;
  344. typedef D3DRMANIMATIONKEY *LPD3DRMANIMATIONKEY;
  345. #define D3DRMANIMATION_ROTATEKEY 0x01
  346. #define D3DRMANIMATION_SCALEKEY 0x02
  347. #define D3DRMANIMATION_POSITIONKEY 0x03
  348. typedef DWORD D3DRMMAPPING, D3DRMMAPPINGFLAG, *LPD3DRMMAPPING;
  349. static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPU = 1;
  350. static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPV = 2;
  351. static const D3DRMMAPPINGFLAG D3DRMMAP_PERSPCORRECT = 4;
  352. typedef struct _D3DRMVERTEX {
  353. D3DVECTOR position;
  354. D3DVECTOR normal;
  355. D3DVALUE tu;
  356. D3DVALUE tv;
  357. D3DCOLOR color;
  358. } D3DRMVERTEX, *LPD3DRMVERTEX;
  359. typedef LONG D3DRMGROUPINDEX;
  360. static const D3DRMGROUPINDEX D3DRMGROUP_ALLGROUPS = -1;
  361. void WINAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D m, D3DRMQUATERNION *q);
  362. D3DRMQUATERNION * WINAPI D3DRMQuaternionFromRotation(D3DRMQUATERNION *x, D3DVECTOR *axis, D3DVALUE theta);
  363. D3DRMQUATERNION * WINAPI D3DRMQuaternionMultiply(D3DRMQUATERNION *ret, D3DRMQUATERNION *x, D3DRMQUATERNION *y);
  364. D3DRMQUATERNION * WINAPI D3DRMQuaternionSlerp(D3DRMQUATERNION *ret,
  365. D3DRMQUATERNION *x, D3DRMQUATERNION *y, D3DVALUE alpha);
  366. D3DVECTOR * WINAPI D3DRMVectorAdd(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
  367. D3DVECTOR * WINAPI D3DRMVectorCrossProduct(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
  368. D3DVALUE WINAPI D3DRMVectorDotProduct(D3DVECTOR *x, D3DVECTOR *y);
  369. D3DVECTOR * WINAPI D3DRMVectorNormalize(D3DVECTOR *x);
  370. #define D3DRMVectorNormalise D3DRMVectorNormalize
  371. D3DVALUE WINAPI D3DRMVectorModulus(D3DVECTOR *x);
  372. D3DVECTOR * WINAPI D3DRMVectorRandom(D3DVECTOR *ret);
  373. D3DVECTOR * WINAPI D3DRMVectorRotate(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *axis, D3DVALUE theta);
  374. D3DVECTOR * WINAPI D3DRMVectorReflect(D3DVECTOR *ret, D3DVECTOR *ray, D3DVECTOR *normal);
  375. D3DVECTOR * WINAPI D3DRMVectorScale(D3DVECTOR *ret, D3DVECTOR *x, D3DVALUE scale);
  376. D3DVECTOR * WINAPI D3DRMVectorSubtract(D3DVECTOR *ret, D3DVECTOR *x, D3DVECTOR *y);
  377. D3DCOLOR WINAPI D3DRMCreateColorRGB(D3DVALUE, D3DVALUE, D3DVALUE);
  378. D3DCOLOR WINAPI D3DRMCreateColorRGBA(D3DVALUE, D3DVALUE, D3DVALUE, D3DVALUE);
  379. D3DVALUE WINAPI D3DRMColorGetAlpha(D3DCOLOR);
  380. D3DVALUE WINAPI D3DRMColorGetBlue(D3DCOLOR);
  381. D3DVALUE WINAPI D3DRMColorGetGreen(D3DCOLOR);
  382. D3DVALUE WINAPI D3DRMColorGetRed(D3DCOLOR);
  383. #if defined(__cplusplus)
  384. }
  385. #endif
  386. #endif