d3dtypes.h 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367
  1. /*
  2. * Copyright (C) 2000 Peter Hunnisett
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  17. */
  18. /* FIXME: Need to add C++ code for certain structs for headers - this is going to be a problem
  19. if WINE continues to only use C code - I suppose that we could always inline in
  20. the header file to get around that little problem... */
  21. /* FIXME: We need to implement versioning on everything directx 5 and up if these headers
  22. are going to be generically useful for directx stuff */
  23. #ifndef __WINE_D3DTYPES_H
  24. #define __WINE_D3DTYPES_H
  25. #include <windows.h>
  26. #include <float.h>
  27. #include <ddraw.h>
  28. #ifdef __i386__
  29. #include <pshpack4.h>
  30. #endif
  31. #define D3DVALP(val, prec) ((float)(val))
  32. #define D3DVAL(val) ((float)(val))
  33. #define D3DDivide(a, b) (float)((double) (a) / (double) (b))
  34. #define D3DMultiply(a, b) ((a) * (b))
  35. typedef LONG D3DFIXED;
  36. #ifndef RGB_MAKE
  37. #define CI_GETALPHA(ci) ((ci) >> 24)
  38. #define CI_GETINDEX(ci) (((ci) >> 8) & 0xffff)
  39. #define CI_GETFRACTION(ci) ((ci) & 0xff)
  40. #define CI_ROUNDINDEX(ci) CI_GETINDEX((ci) + 0x80)
  41. #define CI_MASKALPHA(ci) ((ci) & 0xffffff)
  42. #define CI_MAKE(a, i, f) (((a) << 24) | ((i) << 8) | (f))
  43. #define RGBA_GETALPHA(rgb) ((rgb) >> 24)
  44. #define RGBA_GETRED(rgb) (((rgb) >> 16) & 0xff)
  45. #define RGBA_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
  46. #define RGBA_GETBLUE(rgb) ((rgb) & 0xff)
  47. #define RGBA_MAKE(r, g, b, a) ((D3DCOLOR) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
  48. #define D3DRGB(r, g, b) \
  49. (0xff000000 | ( ((LONG)((r) * 255)) << 16) | (((LONG)((g) * 255)) << 8) | (LONG)((b) * 255))
  50. #define D3DRGBA(r, g, b, a) \
  51. ( (((LONG)((a) * 255)) << 24) | (((LONG)((r) * 255)) << 16) \
  52. | (((LONG)((g) * 255)) << 8) | (LONG)((b) * 255) \
  53. )
  54. #define RGB_GETRED(rgb) (((rgb) >> 16) & 0xff)
  55. #define RGB_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
  56. #define RGB_GETBLUE(rgb) ((rgb) & 0xff)
  57. #define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
  58. #define RGB_MAKE(r, g, b) ((D3DCOLOR) (((r) << 16) | ((g) << 8) | (b)))
  59. #define RGBA_TORGB(rgba) ((D3DCOLOR) ((rgba) & 0xffffff))
  60. #define RGB_TORGBA(rgb) ((D3DCOLOR) ((rgb) | 0xff000000))
  61. #endif
  62. #define D3DENUMRET_CANCEL DDENUMRET_CANCEL
  63. #define D3DENUMRET_OK DDENUMRET_OK
  64. typedef HRESULT (CALLBACK *LPD3DVALIDATECALLBACK)(void *ctx, DWORD offset);
  65. typedef HRESULT (CALLBACK *LPD3DENUMTEXTUREFORMATSCALLBACK)(DDSURFACEDESC *surface_desc, void *ctx);
  66. typedef HRESULT (CALLBACK *LPD3DENUMPIXELFORMATSCALLBACK)(DDPIXELFORMAT *format, void *ctx);
  67. #ifndef DX_SHARED_DEFINES
  68. typedef float D3DVALUE,*LPD3DVALUE;
  69. #ifndef D3DCOLOR_DEFINED
  70. typedef DWORD D3DCOLOR, *LPD3DCOLOR;
  71. #define D3DCOLOR_DEFINED
  72. #endif
  73. #ifndef D3DVECTOR_DEFINED
  74. typedef struct _D3DVECTOR {
  75. union {
  76. D3DVALUE x;
  77. D3DVALUE dvX;
  78. } DUMMYUNIONNAME1;
  79. union {
  80. D3DVALUE y;
  81. D3DVALUE dvY;
  82. } DUMMYUNIONNAME2;
  83. union {
  84. D3DVALUE z;
  85. D3DVALUE dvZ;
  86. } DUMMYUNIONNAME3;
  87. #if defined(__cplusplus) && defined(D3D_OVERLOADS)
  88. /* the definitions for these methods are in d3dvec.inl */
  89. public:
  90. /*** constructors ***/
  91. _D3DVECTOR() {}
  92. _D3DVECTOR(D3DVALUE f);
  93. _D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z);
  94. _D3DVECTOR(const D3DVALUE f[3]);
  95. /*** assignment operators ***/
  96. _D3DVECTOR& operator += (const _D3DVECTOR& v);
  97. _D3DVECTOR& operator -= (const _D3DVECTOR& v);
  98. _D3DVECTOR& operator *= (const _D3DVECTOR& v);
  99. _D3DVECTOR& operator /= (const _D3DVECTOR& v);
  100. _D3DVECTOR& operator *= (D3DVALUE s);
  101. _D3DVECTOR& operator /= (D3DVALUE s);
  102. /*** unary operators ***/
  103. friend _D3DVECTOR operator + (const _D3DVECTOR& v);
  104. friend _D3DVECTOR operator - (const _D3DVECTOR& v);
  105. /*** binary operators ***/
  106. friend _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
  107. friend _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
  108. friend _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s);
  109. friend _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v);
  110. friend _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s);
  111. friend D3DVALUE SquareMagnitude(const _D3DVECTOR& v);
  112. friend D3DVALUE Magnitude(const _D3DVECTOR& v);
  113. friend _D3DVECTOR Normalize(const _D3DVECTOR& v);
  114. friend D3DVALUE DotProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
  115. friend _D3DVECTOR CrossProduct(const _D3DVECTOR& v1, const _D3DVECTOR& v2);
  116. #endif
  117. } D3DVECTOR,*LPD3DVECTOR;
  118. #define D3DVECTOR_DEFINED
  119. #endif
  120. #define DX_SHARED_DEFINES
  121. #endif /* DX_SHARED_DEFINES */
  122. typedef DWORD D3DMATERIALHANDLE, *LPD3DMATERIALHANDLE;
  123. typedef DWORD D3DTEXTUREHANDLE, *LPD3DTEXTUREHANDLE;
  124. typedef DWORD D3DMATRIXHANDLE, *LPD3DMATRIXHANDLE;
  125. typedef struct _D3DCOLORVALUE {
  126. union {
  127. D3DVALUE r;
  128. D3DVALUE dvR;
  129. } DUMMYUNIONNAME1;
  130. union {
  131. D3DVALUE g;
  132. D3DVALUE dvG;
  133. } DUMMYUNIONNAME2;
  134. union {
  135. D3DVALUE b;
  136. D3DVALUE dvB;
  137. } DUMMYUNIONNAME3;
  138. union {
  139. D3DVALUE a;
  140. D3DVALUE dvA;
  141. } DUMMYUNIONNAME4;
  142. } D3DCOLORVALUE,*LPD3DCOLORVALUE;
  143. typedef struct _D3DRECT {
  144. union {
  145. LONG x1;
  146. LONG lX1;
  147. } DUMMYUNIONNAME1;
  148. union {
  149. LONG y1;
  150. LONG lY1;
  151. } DUMMYUNIONNAME2;
  152. union {
  153. LONG x2;
  154. LONG lX2;
  155. } DUMMYUNIONNAME3;
  156. union {
  157. LONG y2;
  158. LONG lY2;
  159. } DUMMYUNIONNAME4;
  160. } D3DRECT, *LPD3DRECT;
  161. typedef struct _D3DHVERTEX {
  162. DWORD dwFlags;
  163. union {
  164. D3DVALUE hx;
  165. D3DVALUE dvHX;
  166. } DUMMYUNIONNAME1;
  167. union {
  168. D3DVALUE hy;
  169. D3DVALUE dvHY;
  170. } DUMMYUNIONNAME2;
  171. union {
  172. D3DVALUE hz;
  173. D3DVALUE dvHZ;
  174. } DUMMYUNIONNAME3;
  175. } D3DHVERTEX, *LPD3DHVERTEX;
  176. /*
  177. * Transformed/lit vertices
  178. */
  179. typedef struct _D3DTLVERTEX {
  180. union {
  181. D3DVALUE sx;
  182. D3DVALUE dvSX;
  183. } DUMMYUNIONNAME1;
  184. union {
  185. D3DVALUE sy;
  186. D3DVALUE dvSY;
  187. } DUMMYUNIONNAME2;
  188. union {
  189. D3DVALUE sz;
  190. D3DVALUE dvSZ;
  191. } DUMMYUNIONNAME3;
  192. union {
  193. D3DVALUE rhw;
  194. D3DVALUE dvRHW;
  195. } DUMMYUNIONNAME4;
  196. union {
  197. D3DCOLOR color;
  198. D3DCOLOR dcColor;
  199. } DUMMYUNIONNAME5;
  200. union {
  201. D3DCOLOR specular;
  202. D3DCOLOR dcSpecular;
  203. } DUMMYUNIONNAME6;
  204. union {
  205. D3DVALUE tu;
  206. D3DVALUE dvTU;
  207. } DUMMYUNIONNAME7;
  208. union {
  209. D3DVALUE tv;
  210. D3DVALUE dvTV;
  211. } DUMMYUNIONNAME8;
  212. #if defined(__cplusplus) && defined(D3D_OVERLOADS)
  213. public:
  214. _D3DTLVERTEX() {}
  215. _D3DTLVERTEX(const D3DVECTOR& v, float _rhw, D3DCOLOR _color, D3DCOLOR _specular, float _tu, float _tv) {
  216. sx = v.x; sy = v.y; sz = v.z; rhw = _rhw;
  217. color = _color; specular = _specular;
  218. tu = _tu; tv = _tv;
  219. }
  220. #endif
  221. } D3DTLVERTEX, *LPD3DTLVERTEX;
  222. typedef struct _D3DLVERTEX {
  223. union {
  224. D3DVALUE x;
  225. D3DVALUE dvX;
  226. } DUMMYUNIONNAME1;
  227. union {
  228. D3DVALUE y;
  229. D3DVALUE dvY;
  230. } DUMMYUNIONNAME2;
  231. union {
  232. D3DVALUE z;
  233. D3DVALUE dvZ;
  234. } DUMMYUNIONNAME3;
  235. DWORD dwReserved;
  236. union {
  237. D3DCOLOR color;
  238. D3DCOLOR dcColor;
  239. } DUMMYUNIONNAME4;
  240. union {
  241. D3DCOLOR specular;
  242. D3DCOLOR dcSpecular;
  243. } DUMMYUNIONNAME5;
  244. union {
  245. D3DVALUE tu;
  246. D3DVALUE dvTU;
  247. } DUMMYUNIONNAME6;
  248. union {
  249. D3DVALUE tv;
  250. D3DVALUE dvTV;
  251. } DUMMYUNIONNAME7;
  252. } D3DLVERTEX, *LPD3DLVERTEX;
  253. typedef struct _D3DVERTEX {
  254. union {
  255. D3DVALUE x;
  256. D3DVALUE dvX;
  257. } DUMMYUNIONNAME1;
  258. union {
  259. D3DVALUE y;
  260. D3DVALUE dvY;
  261. } DUMMYUNIONNAME2;
  262. union {
  263. D3DVALUE z;
  264. D3DVALUE dvZ;
  265. } DUMMYUNIONNAME3;
  266. union {
  267. D3DVALUE nx;
  268. D3DVALUE dvNX;
  269. } DUMMYUNIONNAME4;
  270. union {
  271. D3DVALUE ny;
  272. D3DVALUE dvNY;
  273. } DUMMYUNIONNAME5;
  274. union {
  275. D3DVALUE nz;
  276. D3DVALUE dvNZ;
  277. } DUMMYUNIONNAME6;
  278. union {
  279. D3DVALUE tu;
  280. D3DVALUE dvTU;
  281. } DUMMYUNIONNAME7;
  282. union {
  283. D3DVALUE tv;
  284. D3DVALUE dvTV;
  285. } DUMMYUNIONNAME8;
  286. #if defined(__cplusplus) && defined(D3D_OVERLOADS)
  287. public:
  288. _D3DVERTEX() {}
  289. _D3DVERTEX(const D3DVECTOR& v, const D3DVECTOR& n, float _tu, float _tv) {
  290. x = v.x; y = v.y; z = v.z;
  291. nx = n.x; ny = n.y; nz = n.z;
  292. tu = _tu; tv = _tv;
  293. }
  294. #endif
  295. } D3DVERTEX, *LPD3DVERTEX;
  296. typedef struct _D3DMATRIX {
  297. D3DVALUE _11, _12, _13, _14;
  298. D3DVALUE _21, _22, _23, _24;
  299. D3DVALUE _31, _32, _33, _34;
  300. D3DVALUE _41, _42, _43, _44;
  301. #if defined(__cplusplus) && defined(D3D_OVERLOADS)
  302. _D3DMATRIX() { }
  303. /* This is different from MS, but avoids anonymous structs. */
  304. D3DVALUE &operator () (int r, int c)
  305. { return (&_11)[r*4 + c]; }
  306. const D3DVALUE &operator() (int r, int c) const
  307. { return (&_11)[r*4 + c]; }
  308. #endif
  309. } D3DMATRIX, *LPD3DMATRIX;
  310. #if defined(__cplusplus) && defined(D3D_OVERLOADS)
  311. #include <d3dvec.inl>
  312. #endif
  313. typedef struct _D3DVIEWPORT {
  314. DWORD dwSize;
  315. DWORD dwX;
  316. DWORD dwY;
  317. DWORD dwWidth;
  318. DWORD dwHeight;
  319. D3DVALUE dvScaleX;
  320. D3DVALUE dvScaleY;
  321. D3DVALUE dvMaxX;
  322. D3DVALUE dvMaxY;
  323. D3DVALUE dvMinZ;
  324. D3DVALUE dvMaxZ;
  325. } D3DVIEWPORT, *LPD3DVIEWPORT;
  326. typedef struct _D3DVIEWPORT2 {
  327. DWORD dwSize;
  328. DWORD dwX;
  329. DWORD dwY;
  330. DWORD dwWidth;
  331. DWORD dwHeight;
  332. D3DVALUE dvClipX;
  333. D3DVALUE dvClipY;
  334. D3DVALUE dvClipWidth;
  335. D3DVALUE dvClipHeight;
  336. D3DVALUE dvMinZ;
  337. D3DVALUE dvMaxZ;
  338. } D3DVIEWPORT2, *LPD3DVIEWPORT2;
  339. typedef struct _D3DVIEWPORT7 {
  340. DWORD dwX;
  341. DWORD dwY;
  342. DWORD dwWidth;
  343. DWORD dwHeight;
  344. D3DVALUE dvMinZ;
  345. D3DVALUE dvMaxZ;
  346. } D3DVIEWPORT7, *LPD3DVIEWPORT7;
  347. #define D3DMAXUSERCLIPPLANES 32
  348. #define D3DCLIPPLANE0 (1 << 0)
  349. #define D3DCLIPPLANE1 (1 << 1)
  350. #define D3DCLIPPLANE2 (1 << 2)
  351. #define D3DCLIPPLANE3 (1 << 3)
  352. #define D3DCLIPPLANE4 (1 << 4)
  353. #define D3DCLIPPLANE5 (1 << 5)
  354. #define D3DCLIP_LEFT 0x00000001
  355. #define D3DCLIP_RIGHT 0x00000002
  356. #define D3DCLIP_TOP 0x00000004
  357. #define D3DCLIP_BOTTOM 0x00000008
  358. #define D3DCLIP_FRONT 0x00000010
  359. #define D3DCLIP_BACK 0x00000020
  360. #define D3DCLIP_GEN0 0x00000040
  361. #define D3DCLIP_GEN1 0x00000080
  362. #define D3DCLIP_GEN2 0x00000100
  363. #define D3DCLIP_GEN3 0x00000200
  364. #define D3DCLIP_GEN4 0x00000400
  365. #define D3DCLIP_GEN5 0x00000800
  366. #define D3DSTATUS_CLIPUNIONLEFT D3DCLIP_LEFT
  367. #define D3DSTATUS_CLIPUNIONRIGHT D3DCLIP_RIGHT
  368. #define D3DSTATUS_CLIPUNIONTOP D3DCLIP_TOP
  369. #define D3DSTATUS_CLIPUNIONBOTTOM D3DCLIP_BOTTOM
  370. #define D3DSTATUS_CLIPUNIONFRONT D3DCLIP_FRONT
  371. #define D3DSTATUS_CLIPUNIONBACK D3DCLIP_BACK
  372. #define D3DSTATUS_CLIPUNIONGEN0 D3DCLIP_GEN0
  373. #define D3DSTATUS_CLIPUNIONGEN1 D3DCLIP_GEN1
  374. #define D3DSTATUS_CLIPUNIONGEN2 D3DCLIP_GEN2
  375. #define D3DSTATUS_CLIPUNIONGEN3 D3DCLIP_GEN3
  376. #define D3DSTATUS_CLIPUNIONGEN4 D3DCLIP_GEN4
  377. #define D3DSTATUS_CLIPUNIONGEN5 D3DCLIP_GEN5
  378. #define D3DSTATUS_CLIPINTERSECTIONLEFT 0x00001000
  379. #define D3DSTATUS_CLIPINTERSECTIONRIGHT 0x00002000
  380. #define D3DSTATUS_CLIPINTERSECTIONTOP 0x00004000
  381. #define D3DSTATUS_CLIPINTERSECTIONBOTTOM 0x00008000
  382. #define D3DSTATUS_CLIPINTERSECTIONFRONT 0x00010000
  383. #define D3DSTATUS_CLIPINTERSECTIONBACK 0x00020000
  384. #define D3DSTATUS_CLIPINTERSECTIONGEN0 0x00040000
  385. #define D3DSTATUS_CLIPINTERSECTIONGEN1 0x00080000
  386. #define D3DSTATUS_CLIPINTERSECTIONGEN2 0x00100000
  387. #define D3DSTATUS_CLIPINTERSECTIONGEN3 0x00200000
  388. #define D3DSTATUS_CLIPINTERSECTIONGEN4 0x00400000
  389. #define D3DSTATUS_CLIPINTERSECTIONGEN5 0x00800000
  390. #define D3DSTATUS_ZNOTVISIBLE 0x01000000
  391. #define D3DSTATUS_CLIPUNIONALL ( \
  392. D3DSTATUS_CLIPUNIONLEFT | \
  393. D3DSTATUS_CLIPUNIONRIGHT | \
  394. D3DSTATUS_CLIPUNIONTOP | \
  395. D3DSTATUS_CLIPUNIONBOTTOM | \
  396. D3DSTATUS_CLIPUNIONFRONT | \
  397. D3DSTATUS_CLIPUNIONBACK | \
  398. D3DSTATUS_CLIPUNIONGEN0 | \
  399. D3DSTATUS_CLIPUNIONGEN1 | \
  400. D3DSTATUS_CLIPUNIONGEN2 | \
  401. D3DSTATUS_CLIPUNIONGEN3 | \
  402. D3DSTATUS_CLIPUNIONGEN4 | \
  403. D3DSTATUS_CLIPUNIONGEN5 \
  404. )
  405. #define D3DSTATUS_CLIPINTERSECTIONALL ( \
  406. D3DSTATUS_CLIPINTERSECTIONLEFT | \
  407. D3DSTATUS_CLIPINTERSECTIONRIGHT | \
  408. D3DSTATUS_CLIPINTERSECTIONTOP | \
  409. D3DSTATUS_CLIPINTERSECTIONBOTTOM | \
  410. D3DSTATUS_CLIPINTERSECTIONFRONT | \
  411. D3DSTATUS_CLIPINTERSECTIONBACK | \
  412. D3DSTATUS_CLIPINTERSECTIONGEN0 | \
  413. D3DSTATUS_CLIPINTERSECTIONGEN1 | \
  414. D3DSTATUS_CLIPINTERSECTIONGEN2 | \
  415. D3DSTATUS_CLIPINTERSECTIONGEN3 | \
  416. D3DSTATUS_CLIPINTERSECTIONGEN4 | \
  417. D3DSTATUS_CLIPINTERSECTIONGEN5 \
  418. )
  419. #define D3DSTATUS_DEFAULT ( \
  420. D3DSTATUS_CLIPINTERSECTIONALL | \
  421. D3DSTATUS_ZNOTVISIBLE)
  422. #define D3DTRANSFORM_CLIPPED 0x00000001
  423. #define D3DTRANSFORM_UNCLIPPED 0x00000002
  424. typedef struct _D3DTRANSFORMDATA {
  425. DWORD dwSize;
  426. void *lpIn;
  427. DWORD dwInSize;
  428. void *lpOut;
  429. DWORD dwOutSize;
  430. D3DHVERTEX *lpHOut;
  431. DWORD dwClip;
  432. DWORD dwClipIntersection;
  433. DWORD dwClipUnion;
  434. D3DRECT drExtent;
  435. } D3DTRANSFORMDATA, *LPD3DTRANSFORMDATA;
  436. typedef struct _D3DLIGHTINGELEMENT {
  437. D3DVECTOR dvPosition;
  438. D3DVECTOR dvNormal;
  439. } D3DLIGHTINGELEMENT, *LPD3DLIGHTINGELEMENT;
  440. typedef struct _D3DMATERIAL {
  441. DWORD dwSize;
  442. union {
  443. D3DCOLORVALUE diffuse;
  444. D3DCOLORVALUE dcvDiffuse;
  445. } DUMMYUNIONNAME;
  446. union {
  447. D3DCOLORVALUE ambient;
  448. D3DCOLORVALUE dcvAmbient;
  449. } DUMMYUNIONNAME1;
  450. union {
  451. D3DCOLORVALUE specular;
  452. D3DCOLORVALUE dcvSpecular;
  453. } DUMMYUNIONNAME2;
  454. union {
  455. D3DCOLORVALUE emissive;
  456. D3DCOLORVALUE dcvEmissive;
  457. } DUMMYUNIONNAME3;
  458. union {
  459. D3DVALUE power;
  460. D3DVALUE dvPower;
  461. } DUMMYUNIONNAME4;
  462. D3DTEXTUREHANDLE hTexture;
  463. DWORD dwRampSize;
  464. } D3DMATERIAL, *LPD3DMATERIAL;
  465. typedef struct _D3DMATERIAL7 {
  466. union {
  467. D3DCOLORVALUE diffuse;
  468. D3DCOLORVALUE dcvDiffuse;
  469. } DUMMYUNIONNAME;
  470. union {
  471. D3DCOLORVALUE ambient;
  472. D3DCOLORVALUE dcvAmbient;
  473. } DUMMYUNIONNAME1;
  474. union {
  475. D3DCOLORVALUE specular;
  476. D3DCOLORVALUE dcvSpecular;
  477. } DUMMYUNIONNAME2;
  478. union {
  479. D3DCOLORVALUE emissive;
  480. D3DCOLORVALUE dcvEmissive;
  481. } DUMMYUNIONNAME3;
  482. union {
  483. D3DVALUE power;
  484. D3DVALUE dvPower;
  485. } DUMMYUNIONNAME4;
  486. } D3DMATERIAL7, *LPD3DMATERIAL7;
  487. typedef enum {
  488. D3DLIGHT_POINT = 1,
  489. D3DLIGHT_SPOT = 2,
  490. D3DLIGHT_DIRECTIONAL = 3,
  491. D3DLIGHT_PARALLELPOINT = 4,
  492. D3DLIGHT_GLSPOT = 5,
  493. D3DLIGHT_FORCE_DWORD = 0x7fffffff
  494. } D3DLIGHTTYPE;
  495. typedef struct _D3DLIGHT {
  496. DWORD dwSize;
  497. D3DLIGHTTYPE dltType;
  498. D3DCOLORVALUE dcvColor;
  499. D3DVECTOR dvPosition;
  500. D3DVECTOR dvDirection;
  501. D3DVALUE dvRange;
  502. D3DVALUE dvFalloff;
  503. D3DVALUE dvAttenuation0;
  504. D3DVALUE dvAttenuation1;
  505. D3DVALUE dvAttenuation2;
  506. D3DVALUE dvTheta;
  507. D3DVALUE dvPhi;
  508. } D3DLIGHT,*LPD3DLIGHT;
  509. typedef struct _D3DLIGHT7 {
  510. D3DLIGHTTYPE dltType;
  511. D3DCOLORVALUE dcvDiffuse;
  512. D3DCOLORVALUE dcvSpecular;
  513. D3DCOLORVALUE dcvAmbient;
  514. D3DVECTOR dvPosition;
  515. D3DVECTOR dvDirection;
  516. D3DVALUE dvRange;
  517. D3DVALUE dvFalloff;
  518. D3DVALUE dvAttenuation0;
  519. D3DVALUE dvAttenuation1;
  520. D3DVALUE dvAttenuation2;
  521. D3DVALUE dvTheta;
  522. D3DVALUE dvPhi;
  523. } D3DLIGHT7, *LPD3DLIGHT7;
  524. #define D3DLIGHT_ACTIVE 0x00000001
  525. #define D3DLIGHT_NO_SPECULAR 0x00000002
  526. #define D3DLIGHT_ALL (D3DLIGHT_ACTIVE | D3DLIGHT_NO_SPECULAR) /* 0x3 */
  527. #define D3DLIGHT_RANGE_MAX ((float)sqrt(FLT_MAX))
  528. typedef struct _D3DLIGHT2 {
  529. DWORD dwSize;
  530. D3DLIGHTTYPE dltType;
  531. D3DCOLORVALUE dcvColor;
  532. D3DVECTOR dvPosition;
  533. D3DVECTOR dvDirection;
  534. D3DVALUE dvRange;
  535. D3DVALUE dvFalloff;
  536. D3DVALUE dvAttenuation0;
  537. D3DVALUE dvAttenuation1;
  538. D3DVALUE dvAttenuation2;
  539. D3DVALUE dvTheta;
  540. D3DVALUE dvPhi;
  541. DWORD dwFlags;
  542. } D3DLIGHT2, *LPD3DLIGHT2;
  543. typedef struct _D3DLIGHTDATA {
  544. DWORD dwSize;
  545. D3DLIGHTINGELEMENT *lpIn;
  546. DWORD dwInSize;
  547. D3DTLVERTEX *lpOut;
  548. DWORD dwOutSize;
  549. } D3DLIGHTDATA, *LPD3DLIGHTDATA;
  550. #define D3DCOLOR_MONO 1
  551. #define D3DCOLOR_RGB 2
  552. typedef DWORD D3DCOLORMODEL;
  553. #define D3DCLEAR_TARGET 0x00000001
  554. #define D3DCLEAR_ZBUFFER 0x00000002
  555. #define D3DCLEAR_STENCIL 0x00000004
  556. typedef enum _D3DOPCODE {
  557. D3DOP_POINT = 1,
  558. D3DOP_LINE = 2,
  559. D3DOP_TRIANGLE = 3,
  560. D3DOP_MATRIXLOAD = 4,
  561. D3DOP_MATRIXMULTIPLY = 5,
  562. D3DOP_STATETRANSFORM = 6,
  563. D3DOP_STATELIGHT = 7,
  564. D3DOP_STATERENDER = 8,
  565. D3DOP_PROCESSVERTICES = 9,
  566. D3DOP_TEXTURELOAD = 10,
  567. D3DOP_EXIT = 11,
  568. D3DOP_BRANCHFORWARD = 12,
  569. D3DOP_SPAN = 13,
  570. D3DOP_SETSTATUS = 14,
  571. D3DOP_FORCE_DWORD = 0x7fffffff
  572. } D3DOPCODE;
  573. typedef struct _D3DINSTRUCTION {
  574. BYTE bOpcode;
  575. BYTE bSize;
  576. WORD wCount;
  577. } D3DINSTRUCTION, *LPD3DINSTRUCTION;
  578. typedef struct _D3DTEXTURELOAD {
  579. D3DTEXTUREHANDLE hDestTexture;
  580. D3DTEXTUREHANDLE hSrcTexture;
  581. } D3DTEXTURELOAD, *LPD3DTEXTURELOAD;
  582. typedef struct _D3DPICKRECORD {
  583. BYTE bOpcode;
  584. BYTE bPad;
  585. DWORD dwOffset;
  586. D3DVALUE dvZ;
  587. } D3DPICKRECORD, *LPD3DPICKRECORD;
  588. typedef enum {
  589. D3DSHADE_FLAT = 1,
  590. D3DSHADE_GOURAUD = 2,
  591. D3DSHADE_PHONG = 3,
  592. D3DSHADE_FORCE_DWORD = 0x7fffffff
  593. } D3DSHADEMODE;
  594. typedef enum {
  595. D3DFILL_POINT = 1,
  596. D3DFILL_WIREFRAME = 2,
  597. D3DFILL_SOLID = 3,
  598. D3DFILL_FORCE_DWORD = 0x7fffffff
  599. } D3DFILLMODE;
  600. typedef struct _D3DLINEPATTERN {
  601. WORD wRepeatFactor;
  602. WORD wLinePattern;
  603. } D3DLINEPATTERN;
  604. typedef enum {
  605. D3DFILTER_NEAREST = 1,
  606. D3DFILTER_LINEAR = 2,
  607. D3DFILTER_MIPNEAREST = 3,
  608. D3DFILTER_MIPLINEAR = 4,
  609. D3DFILTER_LINEARMIPNEAREST = 5,
  610. D3DFILTER_LINEARMIPLINEAR = 6,
  611. D3DFILTER_FORCE_DWORD = 0x7fffffff
  612. } D3DTEXTUREFILTER;
  613. typedef enum {
  614. D3DBLEND_ZERO = 1,
  615. D3DBLEND_ONE = 2,
  616. D3DBLEND_SRCCOLOR = 3,
  617. D3DBLEND_INVSRCCOLOR = 4,
  618. D3DBLEND_SRCALPHA = 5,
  619. D3DBLEND_INVSRCALPHA = 6,
  620. D3DBLEND_DESTALPHA = 7,
  621. D3DBLEND_INVDESTALPHA = 8,
  622. D3DBLEND_DESTCOLOR = 9,
  623. D3DBLEND_INVDESTCOLOR = 10,
  624. D3DBLEND_SRCALPHASAT = 11,
  625. D3DBLEND_BOTHSRCALPHA = 12,
  626. D3DBLEND_BOTHINVSRCALPHA = 13,
  627. D3DBLEND_FORCE_DWORD = 0x7fffffff
  628. } D3DBLEND;
  629. typedef enum {
  630. D3DTBLEND_DECAL = 1,
  631. D3DTBLEND_MODULATE = 2,
  632. D3DTBLEND_DECALALPHA = 3,
  633. D3DTBLEND_MODULATEALPHA = 4,
  634. D3DTBLEND_DECALMASK = 5,
  635. D3DTBLEND_MODULATEMASK = 6,
  636. D3DTBLEND_COPY = 7,
  637. D3DTBLEND_ADD = 8,
  638. D3DTBLEND_FORCE_DWORD = 0x7fffffff
  639. } D3DTEXTUREBLEND;
  640. typedef enum _D3DTEXTUREADDRESS {
  641. D3DTADDRESS_WRAP = 1,
  642. D3DTADDRESS_MIRROR = 2,
  643. D3DTADDRESS_CLAMP = 3,
  644. D3DTADDRESS_BORDER = 4,
  645. D3DTADDRESS_FORCE_DWORD = 0x7fffffff
  646. } D3DTEXTUREADDRESS;
  647. typedef enum {
  648. D3DCULL_NONE = 1,
  649. D3DCULL_CW = 2,
  650. D3DCULL_CCW = 3,
  651. D3DCULL_FORCE_DWORD = 0x7fffffff
  652. } D3DCULL;
  653. typedef enum {
  654. D3DCMP_NEVER = 1,
  655. D3DCMP_LESS = 2,
  656. D3DCMP_EQUAL = 3,
  657. D3DCMP_LESSEQUAL = 4,
  658. D3DCMP_GREATER = 5,
  659. D3DCMP_NOTEQUAL = 6,
  660. D3DCMP_GREATEREQUAL = 7,
  661. D3DCMP_ALWAYS = 8,
  662. D3DCMP_FORCE_DWORD = 0x7fffffff
  663. } D3DCMPFUNC;
  664. typedef enum _D3DSTENCILOP {
  665. D3DSTENCILOP_KEEP = 1,
  666. D3DSTENCILOP_ZERO = 2,
  667. D3DSTENCILOP_REPLACE = 3,
  668. D3DSTENCILOP_INCRSAT = 4,
  669. D3DSTENCILOP_DECRSAT = 5,
  670. D3DSTENCILOP_INVERT = 6,
  671. D3DSTENCILOP_INCR = 7,
  672. D3DSTENCILOP_DECR = 8,
  673. D3DSTENCILOP_FORCE_DWORD = 0x7fffffff
  674. } D3DSTENCILOP;
  675. typedef enum _D3DFOGMODE {
  676. D3DFOG_NONE = 0,
  677. D3DFOG_EXP = 1,
  678. D3DFOG_EXP2 = 2,
  679. D3DFOG_LINEAR = 3,
  680. D3DFOG_FORCE_DWORD = 0x7fffffff
  681. } D3DFOGMODE;
  682. typedef enum _D3DZBUFFERTYPE {
  683. D3DZB_FALSE = 0,
  684. D3DZB_TRUE = 1,
  685. D3DZB_USEW = 2,
  686. D3DZB_FORCE_DWORD = 0x7fffffff
  687. } D3DZBUFFERTYPE;
  688. typedef enum _D3DANTIALIASMODE {
  689. D3DANTIALIAS_NONE = 0,
  690. D3DANTIALIAS_SORTDEPENDENT = 1,
  691. D3DANTIALIAS_SORTINDEPENDENT = 2,
  692. D3DANTIALIAS_FORCE_DWORD = 0x7fffffff
  693. } D3DANTIALIASMODE;
  694. typedef enum {
  695. D3DVT_VERTEX = 1,
  696. D3DVT_LVERTEX = 2,
  697. D3DVT_TLVERTEX = 3,
  698. D3DVT_FORCE_DWORD = 0x7fffffff
  699. } D3DVERTEXTYPE;
  700. typedef enum {
  701. D3DPT_POINTLIST = 1,
  702. D3DPT_LINELIST = 2,
  703. D3DPT_LINESTRIP = 3,
  704. D3DPT_TRIANGLELIST = 4,
  705. D3DPT_TRIANGLESTRIP = 5,
  706. D3DPT_TRIANGLEFAN = 6,
  707. D3DPT_FORCE_DWORD = 0x7fffffff
  708. } D3DPRIMITIVETYPE;
  709. #define D3DSTATE_OVERRIDE_BIAS 256
  710. #define D3DSTATE_OVERRIDE(type) (D3DRENDERSTATETYPE)(((DWORD) (type) + D3DSTATE_OVERRIDE_BIAS))
  711. typedef enum _D3DTRANSFORMSTATETYPE {
  712. D3DTRANSFORMSTATE_WORLD = 1,
  713. D3DTRANSFORMSTATE_VIEW = 2,
  714. D3DTRANSFORMSTATE_PROJECTION = 3,
  715. D3DTRANSFORMSTATE_WORLD1 = 4,
  716. D3DTRANSFORMSTATE_WORLD2 = 5,
  717. D3DTRANSFORMSTATE_WORLD3 = 6,
  718. D3DTRANSFORMSTATE_TEXTURE0 = 16,
  719. D3DTRANSFORMSTATE_TEXTURE1 = 17,
  720. D3DTRANSFORMSTATE_TEXTURE2 = 18,
  721. D3DTRANSFORMSTATE_TEXTURE3 = 19,
  722. D3DTRANSFORMSTATE_TEXTURE4 = 20,
  723. D3DTRANSFORMSTATE_TEXTURE5 = 21,
  724. D3DTRANSFORMSTATE_TEXTURE6 = 22,
  725. D3DTRANSFORMSTATE_TEXTURE7 = 23,
  726. D3DTRANSFORMSTATE_FORCE_DWORD = 0x7fffffff
  727. } D3DTRANSFORMSTATETYPE;
  728. typedef enum {
  729. D3DLIGHTSTATE_MATERIAL = 1,
  730. D3DLIGHTSTATE_AMBIENT = 2,
  731. D3DLIGHTSTATE_COLORMODEL = 3,
  732. D3DLIGHTSTATE_FOGMODE = 4,
  733. D3DLIGHTSTATE_FOGSTART = 5,
  734. D3DLIGHTSTATE_FOGEND = 6,
  735. D3DLIGHTSTATE_FOGDENSITY = 7,
  736. D3DLIGHTSTATE_COLORVERTEX = 8,
  737. D3DLIGHTSTATE_FORCE_DWORD = 0x7fffffff
  738. } D3DLIGHTSTATETYPE;
  739. typedef enum {
  740. D3DRENDERSTATE_TEXTUREHANDLE = 1,
  741. D3DRENDERSTATE_ANTIALIAS = 2,
  742. D3DRENDERSTATE_TEXTUREADDRESS = 3,
  743. D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4,
  744. D3DRENDERSTATE_WRAPU = 5,
  745. D3DRENDERSTATE_WRAPV = 6,
  746. D3DRENDERSTATE_ZENABLE = 7,
  747. D3DRENDERSTATE_FILLMODE = 8,
  748. D3DRENDERSTATE_SHADEMODE = 9,
  749. D3DRENDERSTATE_LINEPATTERN = 10,
  750. D3DRENDERSTATE_MONOENABLE = 11,
  751. D3DRENDERSTATE_ROP2 = 12,
  752. D3DRENDERSTATE_PLANEMASK = 13,
  753. D3DRENDERSTATE_ZWRITEENABLE = 14,
  754. D3DRENDERSTATE_ALPHATESTENABLE = 15,
  755. D3DRENDERSTATE_LASTPIXEL = 16,
  756. D3DRENDERSTATE_TEXTUREMAG = 17,
  757. D3DRENDERSTATE_TEXTUREMIN = 18,
  758. D3DRENDERSTATE_SRCBLEND = 19,
  759. D3DRENDERSTATE_DESTBLEND = 20,
  760. D3DRENDERSTATE_TEXTUREMAPBLEND = 21,
  761. D3DRENDERSTATE_CULLMODE = 22,
  762. D3DRENDERSTATE_ZFUNC = 23,
  763. D3DRENDERSTATE_ALPHAREF = 24,
  764. D3DRENDERSTATE_ALPHAFUNC = 25,
  765. D3DRENDERSTATE_DITHERENABLE = 26,
  766. D3DRENDERSTATE_ALPHABLENDENABLE = 27,
  767. D3DRENDERSTATE_FOGENABLE = 28,
  768. D3DRENDERSTATE_SPECULARENABLE = 29,
  769. D3DRENDERSTATE_ZVISIBLE = 30,
  770. D3DRENDERSTATE_SUBPIXEL = 31,
  771. D3DRENDERSTATE_SUBPIXELX = 32,
  772. D3DRENDERSTATE_STIPPLEDALPHA = 33,
  773. D3DRENDERSTATE_FOGCOLOR = 34,
  774. D3DRENDERSTATE_FOGTABLEMODE = 35,
  775. D3DRENDERSTATE_FOGTABLESTART = 36,
  776. D3DRENDERSTATE_FOGTABLEEND = 37,
  777. D3DRENDERSTATE_FOGTABLEDENSITY = 38,
  778. D3DRENDERSTATE_FOGSTART = 36,
  779. D3DRENDERSTATE_FOGEND = 37,
  780. D3DRENDERSTATE_FOGDENSITY = 38,
  781. D3DRENDERSTATE_STIPPLEENABLE = 39,
  782. D3DRENDERSTATE_EDGEANTIALIAS = 40,
  783. D3DRENDERSTATE_COLORKEYENABLE = 41,
  784. D3DRENDERSTATE_BORDERCOLOR = 43,
  785. D3DRENDERSTATE_TEXTUREADDRESSU = 44,
  786. D3DRENDERSTATE_TEXTUREADDRESSV = 45,
  787. D3DRENDERSTATE_MIPMAPLODBIAS = 46,
  788. D3DRENDERSTATE_ZBIAS = 47,
  789. D3DRENDERSTATE_RANGEFOGENABLE = 48,
  790. D3DRENDERSTATE_ANISOTROPY = 49,
  791. D3DRENDERSTATE_FLUSHBATCH = 50,
  792. D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT = 51,
  793. D3DRENDERSTATE_STENCILENABLE = 52,
  794. D3DRENDERSTATE_STENCILFAIL = 53,
  795. D3DRENDERSTATE_STENCILZFAIL = 54,
  796. D3DRENDERSTATE_STENCILPASS = 55,
  797. D3DRENDERSTATE_STENCILFUNC = 56,
  798. D3DRENDERSTATE_STENCILREF = 57,
  799. D3DRENDERSTATE_STENCILMASK = 58,
  800. D3DRENDERSTATE_STENCILWRITEMASK = 59,
  801. D3DRENDERSTATE_TEXTUREFACTOR = 60,
  802. D3DRENDERSTATE_STIPPLEPATTERN00 = 64,
  803. D3DRENDERSTATE_STIPPLEPATTERN01 = 65,
  804. D3DRENDERSTATE_STIPPLEPATTERN02 = 66,
  805. D3DRENDERSTATE_STIPPLEPATTERN03 = 67,
  806. D3DRENDERSTATE_STIPPLEPATTERN04 = 68,
  807. D3DRENDERSTATE_STIPPLEPATTERN05 = 69,
  808. D3DRENDERSTATE_STIPPLEPATTERN06 = 70,
  809. D3DRENDERSTATE_STIPPLEPATTERN07 = 71,
  810. D3DRENDERSTATE_STIPPLEPATTERN08 = 72,
  811. D3DRENDERSTATE_STIPPLEPATTERN09 = 73,
  812. D3DRENDERSTATE_STIPPLEPATTERN10 = 74,
  813. D3DRENDERSTATE_STIPPLEPATTERN11 = 75,
  814. D3DRENDERSTATE_STIPPLEPATTERN12 = 76,
  815. D3DRENDERSTATE_STIPPLEPATTERN13 = 77,
  816. D3DRENDERSTATE_STIPPLEPATTERN14 = 78,
  817. D3DRENDERSTATE_STIPPLEPATTERN15 = 79,
  818. D3DRENDERSTATE_STIPPLEPATTERN16 = 80,
  819. D3DRENDERSTATE_STIPPLEPATTERN17 = 81,
  820. D3DRENDERSTATE_STIPPLEPATTERN18 = 82,
  821. D3DRENDERSTATE_STIPPLEPATTERN19 = 83,
  822. D3DRENDERSTATE_STIPPLEPATTERN20 = 84,
  823. D3DRENDERSTATE_STIPPLEPATTERN21 = 85,
  824. D3DRENDERSTATE_STIPPLEPATTERN22 = 86,
  825. D3DRENDERSTATE_STIPPLEPATTERN23 = 87,
  826. D3DRENDERSTATE_STIPPLEPATTERN24 = 88,
  827. D3DRENDERSTATE_STIPPLEPATTERN25 = 89,
  828. D3DRENDERSTATE_STIPPLEPATTERN26 = 90,
  829. D3DRENDERSTATE_STIPPLEPATTERN27 = 91,
  830. D3DRENDERSTATE_STIPPLEPATTERN28 = 92,
  831. D3DRENDERSTATE_STIPPLEPATTERN29 = 93,
  832. D3DRENDERSTATE_STIPPLEPATTERN30 = 94,
  833. D3DRENDERSTATE_STIPPLEPATTERN31 = 95,
  834. D3DRENDERSTATE_WRAP0 = 128,
  835. D3DRENDERSTATE_WRAP1 = 129,
  836. D3DRENDERSTATE_WRAP2 = 130,
  837. D3DRENDERSTATE_WRAP3 = 131,
  838. D3DRENDERSTATE_WRAP4 = 132,
  839. D3DRENDERSTATE_WRAP5 = 133,
  840. D3DRENDERSTATE_WRAP6 = 134,
  841. D3DRENDERSTATE_WRAP7 = 135,
  842. D3DRENDERSTATE_CLIPPING = 136,
  843. D3DRENDERSTATE_LIGHTING = 137,
  844. D3DRENDERSTATE_EXTENTS = 138,
  845. D3DRENDERSTATE_AMBIENT = 139,
  846. D3DRENDERSTATE_FOGVERTEXMODE = 140,
  847. D3DRENDERSTATE_COLORVERTEX = 141,
  848. D3DRENDERSTATE_LOCALVIEWER = 142,
  849. D3DRENDERSTATE_NORMALIZENORMALS = 143,
  850. D3DRENDERSTATE_COLORKEYBLENDENABLE = 144,
  851. D3DRENDERSTATE_DIFFUSEMATERIALSOURCE = 145,
  852. D3DRENDERSTATE_SPECULARMATERIALSOURCE = 146,
  853. D3DRENDERSTATE_AMBIENTMATERIALSOURCE = 147,
  854. D3DRENDERSTATE_EMISSIVEMATERIALSOURCE = 148,
  855. D3DRENDERSTATE_VERTEXBLEND = 151,
  856. D3DRENDERSTATE_CLIPPLANEENABLE = 152,
  857. D3DRENDERSTATE_FORCE_DWORD = 0x7fffffff
  858. /* FIXME: We have some retired values that are being reused for DirectX 7 */
  859. } D3DRENDERSTATETYPE;
  860. typedef enum _D3DMATERIALCOLORSOURCE
  861. {
  862. D3DMCS_MATERIAL = 0,
  863. D3DMCS_COLOR1 = 1,
  864. D3DMCS_COLOR2 = 2,
  865. D3DMCS_FORCE_DWORD = 0x7fffffff
  866. } D3DMATERIALCOLORSOURCE;
  867. #define D3DRENDERSTATE_BLENDENABLE D3DRENDERSTATE_ALPHABLENDENABLE
  868. #define D3DRENDERSTATE_WRAPBIAS __MSABI_LONG(128U)
  869. #define D3DWRAP_U __MSABI_LONG(0x00000001)
  870. #define D3DWRAP_V __MSABI_LONG(0x00000002)
  871. #define D3DWRAPCOORD_0 __MSABI_LONG(0x00000001)
  872. #define D3DWRAPCOORD_1 __MSABI_LONG(0x00000002)
  873. #define D3DWRAPCOORD_2 __MSABI_LONG(0x00000004)
  874. #define D3DWRAPCOORD_3 __MSABI_LONG(0x00000008)
  875. #define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
  876. typedef struct _D3DSTATE {
  877. union {
  878. D3DTRANSFORMSTATETYPE dtstTransformStateType;
  879. D3DLIGHTSTATETYPE dlstLightStateType;
  880. D3DRENDERSTATETYPE drstRenderStateType;
  881. } DUMMYUNIONNAME1;
  882. union {
  883. DWORD dwArg[1];
  884. D3DVALUE dvArg[1];
  885. } DUMMYUNIONNAME2;
  886. } D3DSTATE, *LPD3DSTATE;
  887. typedef struct _D3DMATRIXLOAD {
  888. D3DMATRIXHANDLE hDestMatrix;
  889. D3DMATRIXHANDLE hSrcMatrix;
  890. } D3DMATRIXLOAD, *LPD3DMATRIXLOAD;
  891. typedef struct _D3DMATRIXMULTIPLY {
  892. D3DMATRIXHANDLE hDestMatrix;
  893. D3DMATRIXHANDLE hSrcMatrix1;
  894. D3DMATRIXHANDLE hSrcMatrix2;
  895. } D3DMATRIXMULTIPLY, *LPD3DMATRIXMULTIPLY;
  896. typedef struct _D3DPROCESSVERTICES {
  897. DWORD dwFlags;
  898. WORD wStart;
  899. WORD wDest;
  900. DWORD dwCount;
  901. DWORD dwReserved;
  902. } D3DPROCESSVERTICES, *LPD3DPROCESSVERTICES;
  903. #define D3DPROCESSVERTICES_TRANSFORMLIGHT __MSABI_LONG(0x00000000)
  904. #define D3DPROCESSVERTICES_TRANSFORM __MSABI_LONG(0x00000001)
  905. #define D3DPROCESSVERTICES_COPY __MSABI_LONG(0x00000002)
  906. #define D3DPROCESSVERTICES_OPMASK __MSABI_LONG(0x00000007)
  907. #define D3DPROCESSVERTICES_UPDATEEXTENTS __MSABI_LONG(0x00000008)
  908. #define D3DPROCESSVERTICES_NOCOLOR __MSABI_LONG(0x00000010)
  909. typedef enum _D3DTEXTURESTAGESTATETYPE
  910. {
  911. D3DTSS_COLOROP = 1,
  912. D3DTSS_COLORARG1 = 2,
  913. D3DTSS_COLORARG2 = 3,
  914. D3DTSS_ALPHAOP = 4,
  915. D3DTSS_ALPHAARG1 = 5,
  916. D3DTSS_ALPHAARG2 = 6,
  917. D3DTSS_BUMPENVMAT00 = 7,
  918. D3DTSS_BUMPENVMAT01 = 8,
  919. D3DTSS_BUMPENVMAT10 = 9,
  920. D3DTSS_BUMPENVMAT11 = 10,
  921. D3DTSS_TEXCOORDINDEX = 11,
  922. D3DTSS_ADDRESS = 12,
  923. D3DTSS_ADDRESSU = 13,
  924. D3DTSS_ADDRESSV = 14,
  925. D3DTSS_BORDERCOLOR = 15,
  926. D3DTSS_MAGFILTER = 16,
  927. D3DTSS_MINFILTER = 17,
  928. D3DTSS_MIPFILTER = 18,
  929. D3DTSS_MIPMAPLODBIAS = 19,
  930. D3DTSS_MAXMIPLEVEL = 20,
  931. D3DTSS_MAXANISOTROPY = 21,
  932. D3DTSS_BUMPENVLSCALE = 22,
  933. D3DTSS_BUMPENVLOFFSET = 23,
  934. D3DTSS_TEXTURETRANSFORMFLAGS = 24,
  935. D3DTSS_FORCE_DWORD = 0x7fffffff
  936. } D3DTEXTURESTAGESTATETYPE;
  937. #define D3DTSS_TCI_PASSTHRU 0x00000000
  938. #define D3DTSS_TCI_CAMERASPACENORMAL 0x00010000
  939. #define D3DTSS_TCI_CAMERASPACEPOSITION 0x00020000
  940. #define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR 0x00030000
  941. typedef enum _D3DTEXTUREOP
  942. {
  943. D3DTOP_DISABLE = 1,
  944. D3DTOP_SELECTARG1 = 2,
  945. D3DTOP_SELECTARG2 = 3,
  946. D3DTOP_MODULATE = 4,
  947. D3DTOP_MODULATE2X = 5,
  948. D3DTOP_MODULATE4X = 6,
  949. D3DTOP_ADD = 7,
  950. D3DTOP_ADDSIGNED = 8,
  951. D3DTOP_ADDSIGNED2X = 9,
  952. D3DTOP_SUBTRACT = 10,
  953. D3DTOP_ADDSMOOTH = 11,
  954. D3DTOP_BLENDDIFFUSEALPHA = 12,
  955. D3DTOP_BLENDTEXTUREALPHA = 13,
  956. D3DTOP_BLENDFACTORALPHA = 14,
  957. D3DTOP_BLENDTEXTUREALPHAPM = 15,
  958. D3DTOP_BLENDCURRENTALPHA = 16,
  959. D3DTOP_PREMODULATE = 17,
  960. D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
  961. D3DTOP_MODULATECOLOR_ADDALPHA = 19,
  962. D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
  963. D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
  964. D3DTOP_BUMPENVMAP = 22,
  965. D3DTOP_BUMPENVMAPLUMINANCE = 23,
  966. D3DTOP_DOTPRODUCT3 = 24,
  967. D3DTOP_FORCE_DWORD = 0x7fffffff
  968. } D3DTEXTUREOP;
  969. #define D3DTA_SELECTMASK 0x0000000f
  970. #define D3DTA_DIFFUSE 0x00000000
  971. #define D3DTA_CURRENT 0x00000001
  972. #define D3DTA_TEXTURE 0x00000002
  973. #define D3DTA_TFACTOR 0x00000003
  974. #define D3DTA_SPECULAR 0x00000004
  975. #define D3DTA_COMPLEMENT 0x00000010
  976. #define D3DTA_ALPHAREPLICATE 0x00000020
  977. typedef enum _D3DTEXTUREMAGFILTER
  978. {
  979. D3DTFG_POINT = 1,
  980. D3DTFG_LINEAR = 2,
  981. D3DTFG_FLATCUBIC = 3,
  982. D3DTFG_GAUSSIANCUBIC = 4,
  983. D3DTFG_ANISOTROPIC = 5,
  984. D3DTFG_FORCE_DWORD = 0x7fffffff
  985. } D3DTEXTUREMAGFILTER;
  986. typedef enum _D3DTEXTUREMINFILTER
  987. {
  988. D3DTFN_POINT = 1,
  989. D3DTFN_LINEAR = 2,
  990. D3DTFN_ANISOTROPIC = 3,
  991. D3DTFN_FORCE_DWORD = 0x7fffffff
  992. } D3DTEXTUREMINFILTER;
  993. typedef enum _D3DTEXTUREMIPFILTER
  994. {
  995. D3DTFP_NONE = 1,
  996. D3DTFP_POINT = 2,
  997. D3DTFP_LINEAR = 3,
  998. D3DTFP_FORCE_DWORD = 0x7fffffff
  999. } D3DTEXTUREMIPFILTER;
  1000. #define D3DTRIFLAG_START __MSABI_LONG(0x00000000)
  1001. #define D3DTRIFLAG_STARTFLAT(len) (len)
  1002. #define D3DTRIFLAG_ODD __MSABI_LONG(0x0000001e)
  1003. #define D3DTRIFLAG_EVEN __MSABI_LONG(0x0000001f)
  1004. #define D3DTRIFLAG_EDGEENABLE1 __MSABI_LONG(0x00000100)
  1005. #define D3DTRIFLAG_EDGEENABLE2 __MSABI_LONG(0x00000200)
  1006. #define D3DTRIFLAG_EDGEENABLE3 __MSABI_LONG(0x00000400)
  1007. #define D3DTRIFLAG_EDGEENABLETRIANGLE \
  1008. (D3DTRIFLAG_EDGEENABLE1 | D3DTRIFLAG_EDGEENABLE2 | D3DTRIFLAG_EDGEENABLE3)
  1009. typedef struct _D3DTRIANGLE {
  1010. union {
  1011. WORD v1;
  1012. WORD wV1;
  1013. } DUMMYUNIONNAME1;
  1014. union {
  1015. WORD v2;
  1016. WORD wV2;
  1017. } DUMMYUNIONNAME2;
  1018. union {
  1019. WORD v3;
  1020. WORD wV3;
  1021. } DUMMYUNIONNAME3;
  1022. WORD wFlags;
  1023. } D3DTRIANGLE, *LPD3DTRIANGLE;
  1024. typedef struct _D3DLINE {
  1025. union {
  1026. WORD v1;
  1027. WORD wV1;
  1028. } DUMMYUNIONNAME1;
  1029. union {
  1030. WORD v2;
  1031. WORD wV2;
  1032. } DUMMYUNIONNAME2;
  1033. } D3DLINE, *LPD3DLINE;
  1034. typedef struct _D3DSPAN {
  1035. WORD wCount;
  1036. WORD wFirst;
  1037. } D3DSPAN, *LPD3DSPAN;
  1038. typedef struct _D3DPOINT {
  1039. WORD wCount;
  1040. WORD wFirst;
  1041. } D3DPOINT, *LPD3DPOINT;
  1042. typedef struct _D3DBRANCH {
  1043. DWORD dwMask;
  1044. DWORD dwValue;
  1045. WINBOOL bNegate;
  1046. DWORD dwOffset;
  1047. } D3DBRANCH, *LPD3DBRANCH;
  1048. typedef struct _D3DSTATUS {
  1049. DWORD dwFlags;
  1050. DWORD dwStatus;
  1051. D3DRECT drExtent;
  1052. } D3DSTATUS, *LPD3DSTATUS;
  1053. #define D3DSETSTATUS_STATUS __MSABI_LONG(0x00000001)
  1054. #define D3DSETSTATUS_EXTENTS __MSABI_LONG(0x00000002)
  1055. #define D3DSETSTATUS_ALL (D3DSETSTATUS_STATUS | D3DSETSTATUS_EXTENTS)
  1056. typedef struct _D3DCLIPSTATUS {
  1057. DWORD dwFlags;
  1058. DWORD dwStatus;
  1059. float minx, maxx;
  1060. float miny, maxy;
  1061. float minz, maxz;
  1062. } D3DCLIPSTATUS, *LPD3DCLIPSTATUS;
  1063. #define D3DCLIPSTATUS_STATUS __MSABI_LONG(0x00000001)
  1064. #define D3DCLIPSTATUS_EXTENTS2 __MSABI_LONG(0x00000002)
  1065. #define D3DCLIPSTATUS_EXTENTS3 __MSABI_LONG(0x00000004)
  1066. typedef struct {
  1067. DWORD dwSize;
  1068. DWORD dwTrianglesDrawn;
  1069. DWORD dwLinesDrawn;
  1070. DWORD dwPointsDrawn;
  1071. DWORD dwSpansDrawn;
  1072. DWORD dwVerticesProcessed;
  1073. } D3DSTATS, *LPD3DSTATS;
  1074. #define D3DEXECUTE_CLIPPED __MSABI_LONG(0x00000001)
  1075. #define D3DEXECUTE_UNCLIPPED __MSABI_LONG(0x00000002)
  1076. typedef struct _D3DEXECUTEDATA {
  1077. DWORD dwSize;
  1078. DWORD dwVertexOffset;
  1079. DWORD dwVertexCount;
  1080. DWORD dwInstructionOffset;
  1081. DWORD dwInstructionLength;
  1082. DWORD dwHVertexOffset;
  1083. D3DSTATUS dsStatus;
  1084. } D3DEXECUTEDATA, *LPD3DEXECUTEDATA;
  1085. #define D3DPAL_FREE 0x00
  1086. #define D3DPAL_READONLY 0x40
  1087. #define D3DPAL_RESERVED 0x80
  1088. typedef struct _D3DVERTEXBUFFERDESC {
  1089. DWORD dwSize;
  1090. DWORD dwCaps;
  1091. DWORD dwFVF;
  1092. DWORD dwNumVertices;
  1093. } D3DVERTEXBUFFERDESC, *LPD3DVERTEXBUFFERDESC;
  1094. #define D3DVBCAPS_SYSTEMMEMORY __MSABI_LONG(0x00000800)
  1095. #define D3DVBCAPS_WRITEONLY __MSABI_LONG(0x00010000)
  1096. #define D3DVBCAPS_OPTIMIZED __MSABI_LONG(0x80000000)
  1097. #define D3DVBCAPS_DONOTCLIP __MSABI_LONG(0x00000001)
  1098. #define D3DVOP_LIGHT (1 << 10)
  1099. #define D3DVOP_TRANSFORM (1 << 0)
  1100. #define D3DVOP_CLIP (1 << 2)
  1101. #define D3DVOP_EXTENTS (1 << 3)
  1102. #define D3DMAXNUMVERTICES ((1<<16) - 1)
  1103. #define D3DMAXNUMPRIMITIVES ((1<<16) - 1)
  1104. #define D3DPV_DONOTCOPYDATA (1 << 0)
  1105. #define D3DFVF_RESERVED0 0x001
  1106. #define D3DFVF_POSITION_MASK 0x00E
  1107. #define D3DFVF_XYZ 0x002
  1108. #define D3DFVF_XYZRHW 0x004
  1109. #define D3DFVF_XYZB1 0x006
  1110. #define D3DFVF_XYZB2 0x008
  1111. #define D3DFVF_XYZB3 0x00a
  1112. #define D3DFVF_XYZB4 0x00c
  1113. #define D3DFVF_XYZB5 0x00e
  1114. #define D3DFVF_NORMAL 0x010
  1115. #define D3DFVF_RESERVED1 0x020
  1116. #define D3DFVF_DIFFUSE 0x040
  1117. #define D3DFVF_SPECULAR 0x080
  1118. #define D3DFVF_TEXCOUNT_MASK 0xf00
  1119. #define D3DFVF_TEXCOUNT_SHIFT 8
  1120. #define D3DFVF_TEX0 0x000
  1121. #define D3DFVF_TEX1 0x100
  1122. #define D3DFVF_TEX2 0x200
  1123. #define D3DFVF_TEX3 0x300
  1124. #define D3DFVF_TEX4 0x400
  1125. #define D3DFVF_TEX5 0x500
  1126. #define D3DFVF_TEX6 0x600
  1127. #define D3DFVF_TEX7 0x700
  1128. #define D3DFVF_TEX8 0x800
  1129. #define D3DFVF_RESERVED2 0xf000
  1130. #define D3DFVF_VERTEX ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 )
  1131. #define D3DFVF_LVERTEX ( D3DFVF_XYZ | D3DFVF_RESERVED1 | D3DFVF_DIFFUSE | \
  1132. D3DFVF_SPECULAR | D3DFVF_TEX1 )
  1133. #define D3DFVF_TLVERTEX ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | \
  1134. D3DFVF_TEX1 )
  1135. typedef struct _D3DDP_PTRSTRIDE
  1136. {
  1137. void *lpvData;
  1138. DWORD dwStride;
  1139. } D3DDP_PTRSTRIDE;
  1140. #define D3DDP_MAXTEXCOORD 8
  1141. typedef struct _D3DDRAWPRIMITIVESTRIDEDDATA {
  1142. D3DDP_PTRSTRIDE position;
  1143. D3DDP_PTRSTRIDE normal;
  1144. D3DDP_PTRSTRIDE diffuse;
  1145. D3DDP_PTRSTRIDE specular;
  1146. D3DDP_PTRSTRIDE textureCoords[D3DDP_MAXTEXCOORD];
  1147. } D3DDRAWPRIMITIVESTRIDEDDATA ,*LPD3DDRAWPRIMITIVESTRIDEDDATA;
  1148. #define D3DVIS_INSIDE_FRUSTUM 0
  1149. #define D3DVIS_INTERSECT_FRUSTUM 1
  1150. #define D3DVIS_OUTSIDE_FRUSTUM 2
  1151. #define D3DVIS_INSIDE_LEFT 0
  1152. #define D3DVIS_INTERSECT_LEFT (1 << 2)
  1153. #define D3DVIS_OUTSIDE_LEFT (2 << 2)
  1154. #define D3DVIS_INSIDE_RIGHT 0
  1155. #define D3DVIS_INTERSECT_RIGHT (1 << 4)
  1156. #define D3DVIS_OUTSIDE_RIGHT (2 << 4)
  1157. #define D3DVIS_INSIDE_TOP 0
  1158. #define D3DVIS_INTERSECT_TOP (1 << 6)
  1159. #define D3DVIS_OUTSIDE_TOP (2 << 6)
  1160. #define D3DVIS_INSIDE_BOTTOM 0
  1161. #define D3DVIS_INTERSECT_BOTTOM (1 << 8)
  1162. #define D3DVIS_OUTSIDE_BOTTOM (2 << 8)
  1163. #define D3DVIS_INSIDE_NEAR 0
  1164. #define D3DVIS_INTERSECT_NEAR (1 << 10)
  1165. #define D3DVIS_OUTSIDE_NEAR (2 << 10)
  1166. #define D3DVIS_INSIDE_FAR 0
  1167. #define D3DVIS_INTERSECT_FAR (1 << 12)
  1168. #define D3DVIS_OUTSIDE_FAR (2 << 12)
  1169. #define D3DVIS_MASK_FRUSTUM (3 << 0)
  1170. #define D3DVIS_MASK_LEFT (3 << 2)
  1171. #define D3DVIS_MASK_RIGHT (3 << 4)
  1172. #define D3DVIS_MASK_TOP (3 << 6)
  1173. #define D3DVIS_MASK_BOTTOM (3 << 8)
  1174. #define D3DVIS_MASK_NEAR (3 << 10)
  1175. #define D3DVIS_MASK_FAR (3 << 12)
  1176. #define D3DDEVINFOID_TEXTUREMANAGER 1
  1177. #define D3DDEVINFOID_D3DTEXTUREMANAGER 2
  1178. #define D3DDEVINFOID_TEXTURING 3
  1179. typedef enum _D3DSTATEBLOCKTYPE
  1180. {
  1181. D3DSBT_ALL = 1,
  1182. D3DSBT_PIXELSTATE = 2,
  1183. D3DSBT_VERTEXSTATE = 3,
  1184. D3DSBT_FORCE_DWORD = 0xffffffff
  1185. } D3DSTATEBLOCKTYPE;
  1186. typedef enum _D3DVERTEXBLENDFLAGS
  1187. {
  1188. D3DVBLEND_DISABLE = 0,
  1189. D3DVBLEND_1WEIGHT = 1,
  1190. D3DVBLEND_2WEIGHTS = 2,
  1191. D3DVBLEND_3WEIGHTS = 3,
  1192. } D3DVERTEXBLENDFLAGS;
  1193. typedef enum _D3DTEXTURETRANSFORMFLAGS {
  1194. D3DTTFF_DISABLE = 0,
  1195. D3DTTFF_COUNT1 = 1,
  1196. D3DTTFF_COUNT2 = 2,
  1197. D3DTTFF_COUNT3 = 3,
  1198. D3DTTFF_COUNT4 = 4,
  1199. D3DTTFF_PROJECTED = 256,
  1200. D3DTTFF_FORCE_DWORD = 0x7fffffff
  1201. } D3DTEXTURETRANSFORMFLAGS;
  1202. #define D3DFVF_TEXTUREFORMAT2 0
  1203. #define D3DFVF_TEXTUREFORMAT1 3
  1204. #define D3DFVF_TEXTUREFORMAT3 1
  1205. #define D3DFVF_TEXTUREFORMAT4 2
  1206. #define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
  1207. #define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
  1208. #define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
  1209. #define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
  1210. #ifdef __i386__
  1211. #include <poppack.h>
  1212. #endif
  1213. #endif