RetroArch
d3dx8math.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (C) Microsoft Corporation. All Rights Reserved.
4  *
5  * File: d3dx8math.h
6  * Content: D3DX math types and functions
7  *
8  */
9 
10 #include "d3dx8.h"
11 
12 #ifndef __D3DX8MATH_H__
13 #define __D3DX8MATH_H__
14 
15 #include <math.h>
16 #pragma warning(disable:4201) /* anonymous unions warning */
17 
18 /*
19  *
20  * General purpose utilities
21  *
22  */
23 #define D3DX_PI ((FLOAT) 3.141592654f)
24 #define D3DX_1BYPI ((FLOAT) 0.318309886f)
25 
26 #define D3DXToRadian( degree ) ((degree) * (D3DX_PI / 180.0f))
27 #define D3DXToDegree( radian ) ((radian) * (180.0f / D3DX_PI))
28 
29 
30 
31 /*
32  *
33  * Vectors
34  *
35  */
36 
37 /*
38  * 2D Vector
39  */
40 typedef struct D3DXVECTOR2
41 {
42 #ifdef __cplusplus
43 public:
44  D3DXVECTOR2() {};
45  D3DXVECTOR2( CONST FLOAT * );
47 
48  /* casting */
49  operator FLOAT* ();
50  operator CONST FLOAT* () const;
51 
52  /* assignment operators */
53  D3DXVECTOR2& operator += ( CONST D3DXVECTOR2& );
54  D3DXVECTOR2& operator -= ( CONST D3DXVECTOR2& );
55  D3DXVECTOR2& operator *= ( FLOAT );
56  D3DXVECTOR2& operator /= ( FLOAT );
57 
58  /* unary operators */
59  D3DXVECTOR2 operator + () const;
60  D3DXVECTOR2 operator - () const;
61 
62  /* binary operators */
63  D3DXVECTOR2 operator + ( CONST D3DXVECTOR2& ) const;
64  D3DXVECTOR2 operator - ( CONST D3DXVECTOR2& ) const;
65  D3DXVECTOR2 operator * ( FLOAT ) const;
66  D3DXVECTOR2 operator / ( FLOAT ) const;
67 
68  friend D3DXVECTOR2 operator * ( FLOAT, CONST D3DXVECTOR2& );
69 
71  BOOL operator != ( CONST D3DXVECTOR2& ) const;
72 
73 
74 public:
75 #endif /* __cplusplus */
76  FLOAT x, y;
78 
79 
80 /*
81  * 3D Vector
82  */
83 #ifdef __cplusplus
84 typedef struct D3DXVECTOR3 : public D3DVECTOR
85 {
86 public:
87  D3DXVECTOR3() {};
88  D3DXVECTOR3( CONST FLOAT * );
91 
92  /* casting */
93  operator FLOAT* ();
94  operator CONST FLOAT* () const;
95 
96  /* assignment operators */
97  D3DXVECTOR3& operator += ( CONST D3DXVECTOR3& );
98  D3DXVECTOR3& operator -= ( CONST D3DXVECTOR3& );
99  D3DXVECTOR3& operator *= ( FLOAT );
100  D3DXVECTOR3& operator /= ( FLOAT );
101 
102  /* unary operators */
103  D3DXVECTOR3 operator + () const;
104  D3DXVECTOR3 operator - () const;
105 
106  /* binary operators */
107  D3DXVECTOR3 operator + ( CONST D3DXVECTOR3& ) const;
108  D3DXVECTOR3 operator - ( CONST D3DXVECTOR3& ) const;
109  D3DXVECTOR3 operator * ( FLOAT ) const;
110  D3DXVECTOR3 operator / ( FLOAT ) const;
111 
112  friend D3DXVECTOR3 operator * ( FLOAT, CONST struct D3DXVECTOR3& );
113 
115  BOOL operator != ( CONST D3DXVECTOR3& ) const;
116 
118 
119 #else /* !__cplusplus */
121 #endif /* !__cplusplus */
122 
123 
124 /*
125  * 4D Vector
126  */
127 typedef struct D3DXVECTOR4
128 {
129 #ifdef __cplusplus
130 public:
131  D3DXVECTOR4() {};
132  D3DXVECTOR4( CONST FLOAT* );
134 
135  /* casting */
136  operator FLOAT* ();
137  operator CONST FLOAT* () const;
138 
139  /* assignment operators */
140  D3DXVECTOR4& operator += ( CONST D3DXVECTOR4& );
141  D3DXVECTOR4& operator -= ( CONST D3DXVECTOR4& );
142  D3DXVECTOR4& operator *= ( FLOAT );
143  D3DXVECTOR4& operator /= ( FLOAT );
144 
145  /* unary operators */
146  D3DXVECTOR4 operator + () const;
147  D3DXVECTOR4 operator - () const;
148 
149  /* binary operators */
150  D3DXVECTOR4 operator + ( CONST D3DXVECTOR4& ) const;
151  D3DXVECTOR4 operator - ( CONST D3DXVECTOR4& ) const;
152  D3DXVECTOR4 operator * ( FLOAT ) const;
153  D3DXVECTOR4 operator / ( FLOAT ) const;
154 
155  friend D3DXVECTOR4 operator * ( FLOAT, CONST D3DXVECTOR4& );
156 
158  BOOL operator != ( CONST D3DXVECTOR4& ) const;
159 
160 public:
161 #endif /* __cplusplus */
162  FLOAT x, y, z, w;
164 
165 
166 /*
167  *
168  * Matrices
169  *
170  */
171 #ifdef __cplusplus
172 typedef struct D3DXMATRIX : public D3DMATRIX
173 {
174 public:
175  D3DXMATRIX() {};
176  D3DXMATRIX( CONST FLOAT * );
182 
183 
184  /* access grants */
185  FLOAT& operator () ( UINT Row, UINT Col );
186  FLOAT operator () ( UINT Row, UINT Col ) const;
187 
188  /* casting operators */
189  operator FLOAT* ();
190  operator CONST FLOAT* () const;
191 
192  /* assignment operators */
193  D3DXMATRIX& operator *= ( CONST D3DXMATRIX& );
194  D3DXMATRIX& operator += ( CONST D3DXMATRIX& );
195  D3DXMATRIX& operator -= ( CONST D3DXMATRIX& );
196  D3DXMATRIX& operator *= ( FLOAT );
197  D3DXMATRIX& operator /= ( FLOAT );
198 
199  /* unary operators */
200  D3DXMATRIX operator + () const;
201  D3DXMATRIX operator - () const;
202 
203  /* binary operators */
204  D3DXMATRIX operator * ( CONST D3DXMATRIX& ) const;
205  D3DXMATRIX operator + ( CONST D3DXMATRIX& ) const;
206  D3DXMATRIX operator - ( CONST D3DXMATRIX& ) const;
207  D3DXMATRIX operator * ( FLOAT ) const;
208  D3DXMATRIX operator / ( FLOAT ) const;
209 
210  friend D3DXMATRIX operator * ( FLOAT, CONST D3DXMATRIX& );
211 
212  BOOL operator == ( CONST D3DXMATRIX& ) const;
213  BOOL operator != ( CONST D3DXMATRIX& ) const;
214 
216 
217 #else /* !__cplusplus */
219 #endif /* !__cplusplus */
220 
221 /*
222  *
223  * Aligned Matrices
224  *
225  * This class helps keep matrices 16-byte aligned as preferred by P4 cpus.
226  * It aligns matrices on the stack and on the heap or in global scope.
227  * It does this using __declspec(align(16)) which works on VC7 and on VC 6
228  * with the processor pack. Unfortunately there is no way to detect the
229  * latter so this is turned on only on VC7. On other compilers this is the
230  * the same as D3DXMATRIX.
231  * Using this class on a compiler that does not actually do the alignment
232  * can be dangerous since it will not expose bugs that ignore alignment.
233  * E.g if an object of this class in inside a struct or class, and some code
234  * memcopys data in it assuming tight packing. This could break on a compiler
235  * that eventually start aligning the matrix.
236  *
237  */
238 #ifdef __cplusplus
239 typedef struct _D3DXMATRIXA16 : public D3DXMATRIX
240 {
241  _D3DXMATRIXA16() {}
248  D3DXMATRIX(_11, _12, _13, _14,
249  _21, _22, _23, _24,
250  _31, _32, _33, _34,
251  _41, _42, _43, _44) {}
252  void* operator new(size_t s)
253  {
254  LPBYTE p = ::new BYTE[s + 16];
255  if (p)
256  {
257  BYTE offset = (BYTE)(16 - ((UINT_PTR)p & 15));
258  p += offset;
259  p[-1] = offset;
260  }
261  return p;
262  };
263 
264  void* operator new[](size_t s)
265  {
266  LPBYTE p = ::new BYTE[s + 16];
267  if (p)
268  {
269  BYTE offset = (BYTE)(16 - ((UINT_PTR)p & 15));
270  p += offset;
271  p[-1] = offset;
272  }
273  return p;
274  };
275 
276  /* This is NOT a virtual operator. If you cast
277  * to D3DXMATRIX, do not delete using that */
278  void operator delete(void* p)
279  {
280  if(p)
281  {
282  BYTE* pb = static_cast<BYTE*>(p);
283  pb -= pb[-1];
284  ::delete [] pb;
285  }
286  };
287 
288  /* This is NOT a virtual operator. If you cast
289  * to D3DXMATRIX, do not delete using that */
290  void operator delete[](void* p)
291  {
292  if(p)
293  {
294  BYTE* pb = static_cast<BYTE*>(p);
295  pb -= pb[-1];
296  ::delete [] pb;
297  }
298  };
299 
300  struct _D3DXMATRIXA16& operator=(CONST D3DXMATRIX& rhs)
301  {
302  memcpy(&_11, &rhs, sizeof(D3DXMATRIX));
303  return *this;
304  };
306 
307 #else /* !__cplusplus */
309 #endif /* !__cplusplus */
310 
311 #if _MSC_VER >= 1300 /* VC7 */
312 #define _ALIGN_16 __declspec(align(16))
313 #else
314 #define _ALIGN_16 /* Earlier compiler may not understand this, do nothing. */
315 #endif
316 
317 #define D3DXMATRIXA16 _ALIGN_16 _D3DXMATRIXA16
318 
320 
321 /*
322  *
323  * Quaternions
324  *
325  */
326 typedef struct D3DXQUATERNION
327 {
328 #ifdef __cplusplus
329 public:
330  D3DXQUATERNION() {}
333 
334  /* casting */
335  operator FLOAT* ();
336  operator CONST FLOAT* () const;
337 
338  /* assignment operators */
339  D3DXQUATERNION& operator += ( CONST D3DXQUATERNION& );
340  D3DXQUATERNION& operator -= ( CONST D3DXQUATERNION& );
341  D3DXQUATERNION& operator *= ( CONST D3DXQUATERNION& );
342  D3DXQUATERNION& operator *= ( FLOAT );
343  D3DXQUATERNION& operator /= ( FLOAT );
344 
345  /* unary operators */
346  D3DXQUATERNION operator + () const;
347  D3DXQUATERNION operator - () const;
348 
349  /* binary operators */
350  D3DXQUATERNION operator + ( CONST D3DXQUATERNION& ) const;
351  D3DXQUATERNION operator - ( CONST D3DXQUATERNION& ) const;
352  D3DXQUATERNION operator * ( CONST D3DXQUATERNION& ) const;
353  D3DXQUATERNION operator * ( FLOAT ) const;
354  D3DXQUATERNION operator / ( FLOAT ) const;
355 
356  friend D3DXQUATERNION operator * (FLOAT, CONST D3DXQUATERNION& );
357 
359  BOOL operator != ( CONST D3DXQUATERNION& ) const;
360 
361 #endif /*__cplusplus */
362  FLOAT x, y, z, w;
364 
365 
366 /*
367  *
368  * Planes
369  *
370  */
371 typedef struct D3DXPLANE
372 {
373 #ifdef __cplusplus
374 public:
375  D3DXPLANE() {}
376  D3DXPLANE( CONST FLOAT* );
377  D3DXPLANE( FLOAT a, FLOAT b, FLOAT c, FLOAT d );
378 
379  /* casting */
380  operator FLOAT* ();
381  operator CONST FLOAT* () const;
382 
383  /* unary operators */
384  D3DXPLANE operator + () const;
385  D3DXPLANE operator - () const;
386 
387  /* binary operators */
388  BOOL operator == ( CONST D3DXPLANE& ) const;
389  BOOL operator != ( CONST D3DXPLANE& ) const;
390 
391 #endif /* __cplusplus */
392  FLOAT a, b, c, d;
394 
395 
396 /*
397  *
398  * Colors
399  *
400  */
401 
402 typedef struct D3DXCOLOR
403 {
404 #ifdef __cplusplus
405 public:
406  D3DXCOLOR() {}
407  D3DXCOLOR( DWORD argb );
408  D3DXCOLOR( CONST FLOAT * );
410  D3DXCOLOR( FLOAT r, FLOAT g, FLOAT b, FLOAT a );
411 
412  /* casting */
413  operator DWORD () const;
414 
415  operator FLOAT* ();
416  operator CONST FLOAT* () const;
417 
418  operator D3DCOLORVALUE* ();
419  operator CONST D3DCOLORVALUE* () const;
420 
421  operator D3DCOLORVALUE& ();
422  operator CONST D3DCOLORVALUE& () const;
423 
424  /* assignment operators */
425  D3DXCOLOR& operator += ( CONST D3DXCOLOR& );
426  D3DXCOLOR& operator -= ( CONST D3DXCOLOR& );
427  D3DXCOLOR& operator *= ( FLOAT );
428  D3DXCOLOR& operator /= ( FLOAT );
429 
430  /* unary operators */
431  D3DXCOLOR operator + () const;
432  D3DXCOLOR operator - () const;
433 
434  /* binary operators */
435  D3DXCOLOR operator + ( CONST D3DXCOLOR& ) const;
436  D3DXCOLOR operator - ( CONST D3DXCOLOR& ) const;
437  D3DXCOLOR operator * ( FLOAT ) const;
438  D3DXCOLOR operator / ( FLOAT ) const;
439 
440  friend D3DXCOLOR operator * (FLOAT, CONST D3DXCOLOR& );
441 
442  BOOL operator == ( CONST D3DXCOLOR& ) const;
443  BOOL operator != ( CONST D3DXCOLOR& ) const;
444 
445 #endif /* __cplusplus */
446  FLOAT r, g, b, a;
448 
449 
450 
451 /*
452  *
453  * D3DX math functions:
454  *
455  * NOTE:
456  * * All these functions can take the same object as in and out parameters.
457  *
458  * * Out parameters are typically also returned as return values, so that
459  * the output of one function may be used as a parameter to another.
460  *
461  */
462 
463 /*
464  * 2D Vector
465  */
466 
467 /* inline */
468 
470  ( CONST D3DXVECTOR2 *pV );
471 
473  ( CONST D3DXVECTOR2 *pV );
474 
476  ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
477 
478 /* Z component of ((x1,y1,0) cross (x2,y2,0)) */
480  ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
481 
483  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
484 
486  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
487 
488 /* Minimize each component. x = min(x1, x2), y = min(y1, y2) */
490  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
491 
492 /* Maximize each component. x = max(x1, x2), y = max(y1, y2) */
494  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
495 
497  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, FLOAT s );
498 
499 /* Linear interpolation. V1 + s(V2-V1) */
501  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2,
502  FLOAT s );
503 
504 /* non-inline */
505 #ifdef __cplusplus
506 extern "C" {
507 #endif
508 
510  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV );
511 
512 /* Hermite interpolation between position V1, tangent T1 (when s == 0)
513  * and position V2, tangent T2 (when s == 1). */
515  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pT1,
516  CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pT2, FLOAT s );
517 
518 /* CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1) */
520  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV0, CONST D3DXVECTOR2 *pV1,
521  CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pV3, FLOAT s );
522 
523 /* Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) */
525  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2,
526  CONST D3DXVECTOR2 *pV3, FLOAT f, FLOAT g);
527 
528 /* Transform (x, y, 0, 1) by matrix. */
530  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
531 
532 /* Transform (x, y, 0, 1) by matrix, project result back into w=1. */
534  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
535 
536 /* Transform (x, y, 0, 0) by matrix. */
538  ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
539 
540 #ifdef __cplusplus
541 }
542 #endif
543 
544 /*
545  * 3D Vector
546  */
547 
548 /* inline */
549 
551  ( CONST D3DXVECTOR3 *pV );
552 
554  ( CONST D3DXVECTOR3 *pV );
555 
557  ( CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
558 
560  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
561 
563  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
564 
566  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
567 
568 /* Minimize each component. x = min(x1, x2), y = min(y1, y2), ... */
570  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
571 
572 /* Maximize each component. x = max(x1, x2), y = max(y1, y2), ... */
574  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
575 
577  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, FLOAT s);
578 
579 /* Linear interpolation. V1 + s(V2-V1) */
581  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
582  FLOAT s );
583 
584 /* non-inline */
585 #ifdef __cplusplus
586 extern "C" {
587 #endif
588 
590  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV );
591 
592 /* Hermite interpolation between position V1, tangent T1 (when s == 0)
593  * and position V2, tangent T2 (when s == 1). */
595  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pT1,
596  CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pT2, FLOAT s );
597 
598 /* CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1) */
600  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV0, CONST D3DXVECTOR3 *pV1,
601  CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pV3, FLOAT s );
602 
603 /* Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) */
605  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
606  CONST D3DXVECTOR3 *pV3, FLOAT f, FLOAT g);
607 
608 /* Transform (x, y, z, 1) by matrix. */
610  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
611 
612 /* Transform (x, y, z, 1) by matrix, project result back into w=1. */
614  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
615 
616 /* Transform (x, y, z, 0) by matrix. If you transforming a normal by a
617  * non-affine matrix, the matrix you pass to this function should be the
618  * transpose of the inverse of the matrix you would use to transform a coord. */
620  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
621 
622 /* Project vector from object space into screen space */
624  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DVIEWPORT8 *pViewport,
625  CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld);
626 
627 /* Project vector from screen space into object space */
629  ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DVIEWPORT8 *pViewport,
630  CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld);
631 
632 #ifdef __cplusplus
633 }
634 #endif
635 
636 /*
637  * 4D Vector
638  */
639 
640 /* inline */
641 
643  ( CONST D3DXVECTOR4 *pV );
644 
646  ( CONST D3DXVECTOR4 *pV );
647 
649  ( CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2 );
650 
652  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
653 
655  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
656 
657 /* Minimize each component. x = min(x1, x2), y = min(y1, y2), ... */
659  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
660 
661 /* Maximize each component. x = max(x1, x2), y = max(y1, y2), ... */
663  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
664 
666  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, FLOAT s);
667 
668 /* Linear interpolation. V1 + s(V2-V1) */
670  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
671  FLOAT s );
672 
673 /* non-inline */
674 #ifdef __cplusplus
675 extern "C" {
676 #endif
677 
678 /* Cross-product in 4 dimensions. */
680  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
681  CONST D3DXVECTOR4 *pV3);
682 
684  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV );
685 
686 /* Hermite interpolation between position V1, tangent T1 (when s == 0)
687  * and position V2, tangent T2 (when s == 1). */
689  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pT1,
690  CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pT2, FLOAT s );
691 
692 /* CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1) */
694  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV0, CONST D3DXVECTOR4 *pV1,
695  CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pV3, FLOAT s );
696 
697 /* Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1) */
699  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
700  CONST D3DXVECTOR4 *pV3, FLOAT f, FLOAT g);
701 
702 /* Transform vector by matrix. */
704  ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, CONST D3DXMATRIX *pM );
705 
706 #ifdef __cplusplus
707 }
708 #endif
709 
710 
711 /*
712  * 4D Matrix
713  */
714 
715 /* inline */
716 
718  ( D3DXMATRIX *pOut );
719 
721  ( CONST D3DXMATRIX *pM );
722 
723 
724 /* non-inline */
725 #ifdef __cplusplus
726 extern "C" {
727 #endif
728 
730  ( CONST D3DXMATRIX *pM );
731 
733  ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM );
734 
735 /* Matrix multiplication. The result represents the transformation M2
736  * followed by the transformation M1. (Out = M1 * M2) */
738  ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2 );
739 
740 /* Matrix multiplication, followed by a transpose. (Out = T(M1 * M2)) */
742  ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2 );
743 
744 /* Calculate inverse of matrix. Inversion my fail, in which case NULL will
745  * be returned. The determinant of pM is also returned it pfDeterminant
746  * is non-NULL. */
748  ( D3DXMATRIX *pOut, FLOAT *pDeterminant, CONST D3DXMATRIX *pM );
749 
750 /* Build a matrix which scales by (sx, sy, sz) */
752  ( D3DXMATRIX *pOut, FLOAT sx, FLOAT sy, FLOAT sz );
753 
754 /* Build a matrix which translates by (x, y, z) */
756  ( D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z );
757 
758 /* Build a matrix which rotates around the X axis */
760  ( D3DXMATRIX *pOut, FLOAT Angle );
761 
762 /* Build a matrix which rotates around the Y axis */
764  ( D3DXMATRIX *pOut, FLOAT Angle );
765 
766 /* Build a matrix which rotates around the Z axis */
768  ( D3DXMATRIX *pOut, FLOAT Angle );
769 
770 /* Build a matrix which rotates around an arbitrary axis */
772  ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle );
773 
774 /* Build a matrix from a quaternion */
776  ( D3DXMATRIX *pOut, CONST D3DXQUATERNION *pQ);
777 
778 /* Yaw around the Y axis, a pitch around the X axis,
779  * and a roll around the Z axis. */
781  ( D3DXMATRIX *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll );
782 
783 
784 /* Build transformation matrix. NULL arguments are treated as identity.
785  * Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt */
787  ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pScalingCenter,
788  CONST D3DXQUATERNION *pScalingRotation, CONST D3DXVECTOR3 *pScaling,
789  CONST D3DXVECTOR3 *pRotationCenter, CONST D3DXQUATERNION *pRotation,
790  CONST D3DXVECTOR3 *pTranslation);
791 
792 /* Build affine transformation matrix. NULL arguments are treated as identity.
793  * Mout = Ms * Mrc-1 * Mr * Mrc * Mt */
795  ( D3DXMATRIX *pOut, FLOAT Scaling, CONST D3DXVECTOR3 *pRotationCenter,
796  CONST D3DXQUATERNION *pRotation, CONST D3DXVECTOR3 *pTranslation);
797 
798 /* Build a lookat matrix. (right-handed) */
800  ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt,
801  CONST D3DXVECTOR3 *pUp );
802 
803 /* Build a lookat matrix. (left-handed) */
805  ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt,
806  CONST D3DXVECTOR3 *pUp );
807 
808 /* Build a perspective projection matrix. (right-handed) */
810  ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
811 
812 /* Build a perspective projection matrix. (left-handed) */
814  ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
815 
816 /* Build a perspective projection matrix. (right-handed) */
818  ( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf );
819 
820 /* Build a perspective projection matrix. (left-handed) */
822  ( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf );
823 
824 /* Build a perspective projection matrix. (right-handed) */
826  ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
827  FLOAT zf );
828 
829 /* Build a perspective projection matrix. (left-handed) */
831  ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
832  FLOAT zf );
833 
834 /* Build an ortho projection matrix. (right-handed) */
836  ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
837 
838 /* Build an ortho projection matrix. (left-handed) */
840  ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
841 
842 /* Build an ortho projection matrix. (right-handed) */
844  ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
845  FLOAT zf );
846 
847 /* Build an ortho projection matrix. (left-handed) */
849  ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
850  FLOAT zf );
851 
852 /* Build a matrix which flattens geometry into a plane, as if casting
853  * a shadow from a light. */
855  ( D3DXMATRIX *pOut, CONST D3DXVECTOR4 *pLight,
856  CONST D3DXPLANE *pPlane );
857 
858 /* Build a matrix which reflects the coordinate system about a plane */
860  ( D3DXMATRIX *pOut, CONST D3DXPLANE *pPlane );
861 
862 #ifdef __cplusplus
863 }
864 #endif
865 
866 
867 /*
868  * Quaternion
869  */
870 
871 /* inline */
872 
874  ( CONST D3DXQUATERNION *pQ );
875 
876 /* Length squared, or "norm" */
878  ( CONST D3DXQUATERNION *pQ );
879 
881  ( CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2 );
882 
883 /* (0, 0, 0, 1) */
885  ( D3DXQUATERNION *pOut );
886 
888  ( CONST D3DXQUATERNION *pQ );
889 
890 /* (-x, -y, -z, w) */
892  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
893 
894 
895 /* non-inline */
896 #ifdef __cplusplus
897 extern "C" {
898 #endif
899 
900 /* Compute a quaternin's axis and angle of rotation. Expects unit quaternions. */
901 void WINAPI D3DXQuaternionToAxisAngle
902  ( CONST D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, FLOAT *pAngle );
903 
904 /* Build a quaternion from a rotation matrix. */
906  ( D3DXQUATERNION *pOut, CONST D3DXMATRIX *pM);
907 
908 /* Rotation about arbitrary axis. */
910  ( D3DXQUATERNION *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle );
911 
912 /* Yaw around the Y axis, a pitch around the X axis,
913  * and a roll around the Z axis. */
915  ( D3DXQUATERNION *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll );
916 
917 /* Quaternion multiplication. The result represents the rotation Q2
918  * followed by the rotation Q1. (Out = Q2 * Q1) */
920  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
921  CONST D3DXQUATERNION *pQ2 );
922 
924  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
925 
926 /* Conjugate and re-norm */
928  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
929 
930 /* Expects unit quaternions.
931  * if q = (cos(theta), sin(theta) * v); ln(q) = (0, theta * v) */
933  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
934 
935 /* Expects pure quaternions. (w == 0) w is ignored in calculation.
936  * if q = (0, theta * v); exp(q) = (cos(theta), sin(theta) * v) */
938  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
939 
940 /* Spherical linear interpolation between Q1 (t == 0) and Q2 (t == 1).
941  * Expects unit quaternions. */
943  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
944  CONST D3DXQUATERNION *pQ2, FLOAT t );
945 
946 /* Spherical quadrangle interpolation.
947  * Slerp(Slerp(Q1, C, t), Slerp(A, B, t), 2t(1-t)) */
949  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
951  CONST D3DXQUATERNION *pC, FLOAT t );
952 
953 /* Setup control points for spherical quadrangle interpolation
954  * from Q1 to Q2. The control points are chosen in such a way
955  * to ensure the continuity of tangents with adjacent segments. */
956 void WINAPI D3DXQuaternionSquadSetup
957  ( D3DXQUATERNION *pAOut, D3DXQUATERNION *pBOut, D3DXQUATERNION *pCOut,
960 
961 /* Barycentric interpolation.
962  * Slerp(Slerp(Q1, Q2, f+g), Slerp(Q1, Q3, f+g), g/(f+g)) */
964  ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
966  FLOAT f, FLOAT g );
967 
968 #ifdef __cplusplus
969 }
970 #endif
971 
972 
973 /*
974  * Plane
975  */
976 
977 /* inline */
978 
979 /* ax + by + cz + dw */
981  ( CONST D3DXPLANE *pP, CONST D3DXVECTOR4 *pV);
982 
983 /* ax + by + cz + d */
985  ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV);
986 
987 /* ax + by + cz */
989  ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV);
990 
991 /* non-inline */
992 #ifdef __cplusplus
993 extern "C" {
994 #endif
995 
996 /* Normalize plane (so that |a,b,c| == 1) */
998  ( D3DXPLANE *pOut, CONST D3DXPLANE *pP);
999 
1000 /* Find the intersection between a plane and a line. If the line is
1001  * parallel to the plane, NULL is returned. */
1003  ( D3DXVECTOR3 *pOut, CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV1,
1004  CONST D3DXVECTOR3 *pV2);
1005 
1006 /* Construct a plane from a point and a normal */
1008  ( D3DXPLANE *pOut, CONST D3DXVECTOR3 *pPoint, CONST D3DXVECTOR3 *pNormal);
1009 
1010 /* Construct a plane from 3 points */
1012  ( D3DXPLANE *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
1013  CONST D3DXVECTOR3 *pV3);
1014 
1015 /* Transform a plane by a matrix. The vector (a,b,c) must be normal.
1016  * M should be the inverse transpose of the transformation desired. */
1018  ( D3DXPLANE *pOut, CONST D3DXPLANE *pP, CONST D3DXMATRIX *pM );
1019 
1020 #ifdef __cplusplus
1021 }
1022 #endif
1023 
1024 
1025 /*
1026  * Color
1027  */
1028 
1029 /* inline */
1030 
1031 /* (1-r, 1-g, 1-b, a) */
1033  (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC);
1034 
1036  (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
1037 
1039  (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
1040 
1042  (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s);
1043 
1044 /* (r1*r2, g1*g2, b1*b2, a1*a2) */
1046  (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
1047 
1048 /* Linear interpolation of r,g,b, and a. C1 + s(C2-C1) */
1050  (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2, FLOAT s);
1051 
1052 /* non-inline */
1053 #ifdef __cplusplus
1054 extern "C" {
1055 #endif
1056 
1057 /* Interpolate r,g,b between desaturated color and color.
1058  * DesaturatedColor + s(Color - DesaturatedColor) */
1060  (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s);
1061 
1062 /* Interpolate r,g,b between 50% grey and color. Grey + s(Color - Grey) */
1064  (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT c);
1065 
1066 #ifdef __cplusplus
1067 }
1068 #endif
1069 
1070 /*
1071  * Misc
1072  */
1073 
1074 #ifdef __cplusplus
1075 extern "C" {
1076 #endif
1077 
1078 /* Calculate Fresnel term given the cosine of theta (likely obtained by
1079  * taking the dot of two normals), and the refraction index of the material. */
1080 FLOAT WINAPI D3DXFresnelTerm
1081  (FLOAT CosTheta, FLOAT RefractionIndex);
1082 
1083 #ifdef __cplusplus
1084 }
1085 #endif
1086 
1087 /*
1088  *
1089  * Matrix Stack
1090  *
1091  */
1092 
1095 
1096 /* {E3357330-CC5E-11d2-A434-00A0C90629A8} */
1097 DEFINE_GUID( IID_ID3DXMatrixStack,
1098 0xe3357330, 0xcc5e, 0x11d2, 0xa4, 0x34, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
1099 
1100 
1101 #undef INTERFACE
1102 #define INTERFACE ID3DXMatrixStack
1103 
1105 {
1106  /* IUnknown methods */
1107  STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
1108  STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1109  STDMETHOD_(ULONG,Release)(THIS) PURE;
1110 
1111  /* ID3DXMatrixStack methods */
1112 
1113  /* Pops the top of the stack, returns the current top
1114  * *after* popping the top. */
1115  STDMETHOD(Pop)(THIS) PURE;
1116 
1117  /* Pushes the stack by one, duplicating the current matrix. */
1118  STDMETHOD(Push)(THIS) PURE;
1119 
1120  /* Loads identity in the current matrix. */
1121  STDMETHOD(LoadIdentity)(THIS) PURE;
1122 
1123  /* Loads the given matrix into the current matrix */
1124  STDMETHOD(LoadMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
1125 
1126  /* Right-Multiplies the given matrix to the current matrix.
1127  * (transformation is about the current world origin) */
1128  STDMETHOD(MultMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
1129 
1130  /* Left-Multiplies the given matrix to the current matrix
1131  * (transformation is about the local origin of the object) */
1132  STDMETHOD(MultMatrixLocal)(THIS_ CONST D3DXMATRIX* pM ) PURE;
1133 
1134  /* Right multiply the current matrix with the computed rotation
1135  * matrix, counterclockwise about the given axis with the given angle.
1136  * (rotation is about the current world origin) */
1137  STDMETHOD(RotateAxis)
1138  (THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
1139 
1140  /* Left multiply the current matrix with the computed rotation
1141  * matrix, counterclockwise about the given axis with the given angle.
1142  * (rotation is about the local origin of the object) */
1143  STDMETHOD(RotateAxisLocal)
1144  (THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
1145 
1146  /* Right multiply the current matrix with the computed rotation
1147  * matrix. All angles are counterclockwise. (rotation is about the
1148  * current world origin)
1149 
1150  * The rotation is composed of a yaw around the Y axis, a pitch around
1151  * the X axis, and a roll around the Z axis. */
1152  STDMETHOD(RotateYawPitchRoll)
1153  (THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
1154 
1155  /* Left multiply the current matrix with the computed rotation
1156  * matrix. All angles are counterclockwise. (rotation is about the
1157  * local origin of the object)
1158 
1159  * The rotation is composed of a yaw around the Y axis, a pitch around
1160  * the X axis, and a roll around the Z axis. */
1161  STDMETHOD(RotateYawPitchRollLocal)
1162  (THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
1163 
1164  /* Right multiply the current matrix with the computed scale
1165  * matrix. (transformation is about the current world origin) */
1166  STDMETHOD(Scale)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
1167 
1168  /* Left multiply the current matrix with the computed scale
1169  * matrix. (transformation is about the local origin of the object) */
1170  STDMETHOD(ScaleLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
1171 
1172  /* Right multiply the current matrix with the computed translation
1173  * matrix. (transformation is about the current world origin) */
1174  STDMETHOD(Translate)(THIS_ FLOAT x, FLOAT y, FLOAT z ) PURE;
1175 
1176  /* Left multiply the current matrix with the computed translation
1177  * matrix. (transformation is about the local origin of the object) */
1178  STDMETHOD(TranslateLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
1179 
1180  /* Obtain the current matrix at the top of the stack */
1181  STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE;
1182 };
1183 
1184 #ifdef __cplusplus
1185 extern "C" {
1186 #endif
1187 
1188 HRESULT WINAPI
1190  DWORD Flags,
1191  LPD3DXMATRIXSTACK* ppStack);
1192 
1193 #ifdef __cplusplus
1194 }
1195 #endif
1196 
1197 #include "d3dx8math.inl"
1198 
1199 #pragma warning(default:4201)
1200 
1201 #endif /* __D3DX8MATH_H__ */
D3DXCOLOR *WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT c)
D3DXMATRIX *WINAPI D3DXMatrixTranspose(D3DXMATRIX *pOut, CONST D3DXMATRIX *pM)
D3DXVECTOR3 *WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pT1, CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pT2, FLOAT s)
D3DXVECTOR4 * D3DXVec4Add(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
Definition: d3dx8math.inl:1392
D3DXCOLOR * D3DXColorSubtract(D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
Definition: d3dx8math.inl:1676
D3DXVECTOR2 * D3DXVec2Scale(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, FLOAT s)
Definition: d3dx8math.inl:1178
D3DXQUATERNION *WINAPI D3DXQuaternionExp(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ)
D3DXQUATERNION *WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pA, CONST D3DXQUATERNION *pB, CONST D3DXQUATERNION *pC, FLOAT t)
D3DXMATRIX *WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf)
D3DXMATRIXA16 * LPD3DXMATRIXA16
Definition: d3dx8math.h:319
Definition: d3d8types.h:92
D3DXMATRIX *WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf)
D3DXVECTOR4 *WINAPI D3DXVec4Normalize(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV)
D3DXMATRIX *WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf)
float _44
Definition: d3d8types.h:83
FLOAT x
Definition: d3dx8math.h:362
D3DXQUATERNION *WINAPI D3DXQuaternionBaryCentric(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2, CONST D3DXQUATERNION *pQ3, FLOAT f, FLOAT g)
Definition: d3d8types.h:77
FLOAT D3DXQuaternionDot(CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2)
Definition: d3dx8math.inl:1551
D3DXCOLOR * D3DXColorModulate(D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
Definition: d3dx8math.inl:1706
DEFINE_GUID(IID_ID3DXMatrixStack, 0xe3357330, 0xcc5e, 0x11d2, 0xa4, 0x34, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8)
D3DXVECTOR4 * D3DXVec4Subtract(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
Definition: d3dx8math.inl:1407
D3DXPLANE *WINAPI D3DXPlaneNormalize(D3DXPLANE *pOut, CONST D3DXPLANE *pP)
D3DXVECTOR3 *WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3 *pOut, CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2)
D3DXMATRIX *WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll)
float _23
Definition: d3d8types.h:81
Definition: d3d8types.h:48
float _21
Definition: d3d8types.h:81
D3DXVECTOR3 *WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM)
D3DXMATRIX * D3DXMatrixIdentity(D3DXMATRIX *pOut)
Definition: d3dx8math.inl:1488
FLOAT r
Definition: d3dx8math.h:446
Definition: glslang_tab.cpp:129
D3DXQUATERNION *WINAPI D3DXQuaternionSlerp(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2, FLOAT t)
D3DXMATRIX *WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf)
D3DXMATRIX *WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf)
float _12
Definition: d3d8types.h:80
GLdouble GLdouble GLdouble r
Definition: glext.h:6406
D3DXVECTOR3 *WINAPI D3DXVec3CatmullRom(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV0, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pV3, FLOAT s)
FLOAT y
Definition: d3dx8math.h:362
GLdouble GLdouble t
Definition: glext.h:6398
HRESULT WINAPI D3DXCreateMatrixStack(DWORD Flags, LPD3DXMATRIXSTACK *ppStack)
D3DXMATRIX *WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf)
D3DXVECTOR4 * D3DXVec4Scale(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, FLOAT s)
Definition: d3dx8math.inl:1452
D3DXVECTOR2 *WINAPI D3DXVec2BaryCentric(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pV3, FLOAT f, FLOAT g)
struct _D3DMATRIX D3DXMATRIX
Definition: d3dx8math.h:218
GLfloat f
Definition: glext.h:8207
D3DXVECTOR3 *WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pV3, FLOAT f, FLOAT g)
D3DXVECTOR3 *WINAPI D3DXVec3Project(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DVIEWPORT8 *pViewport, CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld)
float _31
Definition: d3d8types.h:82
struct D3DXQUATERNION D3DXQUATERNION
D3DXVECTOR2 * D3DXVec2Add(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2)
Definition: d3dx8math.inl:1126
FLOAT D3DXVec3Length(CONST D3DXVECTOR3 *pV)
Definition: d3dx8math.inl:1210
GLdouble s
Definition: glext.h:6390
D3DXMATRIX *WINAPI D3DXMatrixRotationY(D3DXMATRIX *pOut, FLOAT Angle)
GLdouble GLdouble z
Definition: glext.h:6514
float _11
Definition: d3d8types.h:80
float _32
Definition: d3d8types.h:82
typedef HRESULT(WINAPI *PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(_In_ const D3D12_ROOT_SIGNATURE_DESC *pRootSignature
D3DXVECTOR4 *WINAPI D3DXVec4Transform(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, CONST D3DXMATRIX *pM)
D3DXMATRIX *WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf)
D3DXMATRIX *WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf)
DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
Definition: d3dx8math.h:1104
FLOAT y
Definition: d3dx8math.h:162
interface ID3DXMatrixStack * LPD3DXMATRIXSTACK
Definition: d3dx8math.h:1094
float _42
Definition: d3d8types.h:83
const GLubyte * c
Definition: glext.h:9812
GLboolean GLboolean GLboolean b
Definition: glext.h:6844
float _43
Definition: d3d8types.h:83
float _13
Definition: d3d8types.h:80
FLOAT D3DXVec4LengthSq(CONST D3DXVECTOR4 *pV)
Definition: d3dx8math.inl:1370
FLOAT D3DXVec2Dot(CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2)
Definition: d3dx8math.inl:1104
void WINAPI D3DXQuaternionSquadSetup(D3DXQUATERNION *pAOut, D3DXQUATERNION *pBOut, D3DXQUATERNION *pCOut, CONST D3DXQUATERNION *pQ0, CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2, CONST D3DXQUATERNION *pQ3)
D3DXQUATERNION *WINAPI D3DXQuaternionInverse(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ)
D3DXVECTOR4 *WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV0, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pV3, FLOAT s)
Definition: d3dx8math.h:127
struct D3DXVECTOR2 D3DXVECTOR2
FLOAT z
Definition: d3dx8math.h:162
FLOAT D3DXVec4Length(CONST D3DXVECTOR4 *pV)
Definition: d3dx8math.inl:1355
interface ID3DXMatrixStack ID3DXMatrixStack
Definition: d3dx8math.h:1093
FLOAT b
Definition: d3dx8math.h:392
FLOAT D3DXVec3Dot(CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2)
Definition: d3dx8math.inl:1236
D3DXVECTOR2 *WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV)
D3DXMATRIX *WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pOut, CONST D3DXQUATERNION *pQ)
bool l
Definition: connect_wiiupro.c:37
D3DXMATRIX *WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pOut, FLOAT Angle)
struct D3DXPLANE * LPD3DXPLANE
D3DXVECTOR4 *WINAPI D3DXVec3Transform(D3DXVECTOR4 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM)
D3DXMATRIX *WINAPI D3DXMatrixMultiply(D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2)
D3DXVECTOR3 *WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DVIEWPORT8 *pViewport, CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld)
#define UINT_PTR
Definition: Common.h:66
D3DXVECTOR2 *WINAPI D3DXVec2CatmullRom(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV0, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pV3, FLOAT s)
FLOAT d
Definition: d3dx8math.h:392
struct D3DXCOLOR D3DXCOLOR
D3DXMATRIX *WINAPI D3DXMatrixTranslation(D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z)
D3DXMATRIX *WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2)
D3DXCOLOR * D3DXColorLerp(D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2, FLOAT s)
Definition: d3dx8math.inl:1721
struct _D3DMATRIX * LPD3DXMATRIX
Definition: d3dx8math.h:218
struct D3DXVECTOR2 * LPD3DXVECTOR2
FLOAT D3DXVec3LengthSq(CONST D3DXVECTOR3 *pV)
Definition: d3dx8math.inl:1225
FLOAT x
Definition: d3dx8math.h:162
float _33
Definition: d3d8types.h:82
FLOAT z
Definition: d3dx8math.h:362
FLOAT D3DXVec2Length(CONST D3DXVECTOR2 *pV)
Definition: d3dx8math.inl:1078
D3DXVECTOR3 * D3DXVec3Subtract(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2)
Definition: d3dx8math.inl:1279
D3DXVECTOR4 * D3DXVec4Lerp(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2, FLOAT s)
Definition: d3dx8math.inl:1467
D3DXMATRIX *WINAPI D3DXMatrixReflect(D3DXMATRIX *pOut, CONST D3DXPLANE *pPlane)
D3DXQUATERNION * D3DXQuaternionIdentity(D3DXQUATERNION *pOut)
Definition: d3dx8math.inl:1563
GLint GLint GLint GLint GLint GLint y
Definition: glext.h:6295
FLOAT D3DXVec4Dot(CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
Definition: d3dx8math.inl:1381
D3DXMATRIX *WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle)
D3DXQUATERNION *WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle)
D3DXVECTOR4 *WINAPI D3DXVec4Hermite(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pT1, CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pT2, FLOAT s)
FLOAT D3DXPlaneDotNormal(CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV)
Definition: d3dx8math.inl:1630
GLint GLint GLint GLint GLint x
Definition: glext.h:6295
D3DXPLANE *WINAPI D3DXPlaneFromPoints(D3DXPLANE *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pV3)
FLOAT w
Definition: d3dx8math.h:362
BOOL D3DXQuaternionIsIdentity(CONST D3DXQUATERNION *pQ)
Definition: d3dx8math.inl:1576
struct D3DXQUATERNION * LPD3DXQUATERNION
FLOAT WINAPI D3DXFresnelTerm(FLOAT CosTheta, FLOAT RefractionIndex)
FLOAT WINAPI D3DXMatrixfDeterminant(CONST D3DXMATRIX *pM)
D3DXQUATERNION *WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ)
float _34
Definition: d3d8types.h:82
D3DXQUATERNION * D3DXQuaternionConjugate(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ)
Definition: d3dx8math.inl:1588
GLfloat GLfloat p
Definition: glext.h:9809
D3DXQUATERNION *WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *pOut, CONST D3DXMATRIX *pM)
D3DXMATRIX *WINAPI D3DXMatrixInverse(D3DXMATRIX *pOut, FLOAT *pDeterminant, CONST D3DXMATRIX *pM)
float _14
Definition: d3d8types.h:80
struct D3DXVECTOR4 D3DXVECTOR4
D3DXVECTOR4 * D3DXVec4Maximize(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
Definition: d3dx8math.inl:1437
FLOAT D3DXPlaneDotCoord(CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV)
Definition: d3dx8math.inl:1619
struct D3DXCOLOR * LPD3DXCOLOR
FLOAT a
Definition: d3dx8math.h:446
struct _D3DVECTOR D3DXVECTOR3
Definition: d3dx8math.h:120
D3DXCOLOR * D3DXColorNegative(D3DXCOLOR *pOut, CONST D3DXCOLOR *pC)
Definition: d3dx8math.inl:1646
D3DXVECTOR3 * D3DXVec3Scale(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, FLOAT s)
Definition: d3dx8math.inl:1321
Definition: d3dx8math.h:371
float _22
Definition: d3d8types.h:81
D3DXMATRIX *WINAPI D3DXMatrixShadow(D3DXMATRIX *pOut, CONST D3DXVECTOR4 *pLight, CONST D3DXPLANE *pPlane)
static INLINE ULONG Release(void *object)
Definition: dxgi_common.h:253
D3DXMATRIX *WINAPI D3DXMatrixTransformation(D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pScalingCenter, CONST D3DXQUATERNION *pScalingRotation, CONST D3DXVECTOR3 *pScaling, CONST D3DXVECTOR3 *pRotationCenter, CONST D3DXQUATERNION *pRotation, CONST D3DXVECTOR3 *pTranslation)
Definition: d3dx8math.h:40
FLOAT D3DXQuaternionLengthSq(CONST D3DXQUATERNION *pQ)
Definition: d3dx8math.inl:1540
bool operator==(const FloatProxy< T > &first, const FloatProxy< T > &second)
Definition: hex_float.h:162
unsigned int BOOL
Definition: gctypes.h:51
D3DXCOLOR * D3DXColorAdd(D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
Definition: d3dx8math.inl:1661
D3DXVECTOR2 * D3DXVec2Lerp(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2, FLOAT s)
Definition: d3dx8math.inl:1191
D3DXPLANE *WINAPI D3DXPlaneFromPointNormal(D3DXPLANE *pOut, CONST D3DXVECTOR3 *pPoint, CONST D3DXVECTOR3 *pNormal)
D3DXPLANE *WINAPI D3DXPlaneTransform(D3DXPLANE *pOut, CONST D3DXPLANE *pP, CONST D3DXMATRIX *pM)
D3DXVECTOR2 *WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM)
D3DXMATRIX *WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf)
D3DXQUATERNION *WINAPI D3DXQuaternionMultiply(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2)
GLboolean GLboolean g
Definition: glext.h:6844
D3DXVECTOR2 * D3DXVec2Minimize(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2)
Definition: d3dx8math.inl:1152
D3DXVECTOR4 *WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pV3, FLOAT f, FLOAT g)
D3DXQUATERNION *WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll)
D3DXQUATERNION *WINAPI D3DXQuaternionLn(D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ)
D3DXMATRIX *WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt, CONST D3DXVECTOR3 *pUp)
FLOAT y
Definition: d3dx8math.h:76
D3DXVECTOR2 *WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM)
FLOAT b
Definition: d3dx8math.h:446
D3DX_ALIGN16 _D3DXMATRIXA16 D3DXMATRIXA16
Definition: d3dx9math.h:405
D3DXVECTOR3 * D3DXVec3Add(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2)
Definition: d3dx8math.inl:1265
Definition: glslang_tab.cpp:136
D3DXMATRIX *WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt, CONST D3DXVECTOR3 *pUp)
FLOAT D3DXPlaneDot(CONST D3DXPLANE *pP, CONST D3DXVECTOR4 *pV)
Definition: d3dx8math.inl:1608
Definition: d3dx8math.h:326
FLOAT c
Definition: d3dx8math.h:392
D3DXMATRIX _D3DXMATRIXA16
Definition: d3dx8math.h:308
D3DXVECTOR2 *WINAPI D3DXVec2Hermite(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pT1, CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pT2, FLOAT s)
void WINAPI D3DXQuaternionToAxisAngle(CONST D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, FLOAT *pAngle)
D3DXMATRIX *WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf)
FLOAT D3DXVec2CCW(CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2)
Definition: d3dx8math.inl:1115
Definition: glslang_tab.cpp:133
D3DXMATRIX *WINAPI D3DXMatrixRotationX(D3DXMATRIX *pOut, FLOAT Angle)
FLOAT D3DXQuaternionLength(CONST D3DXQUATERNION *pQ)
Definition: d3dx8math.inl:1525
D3DXVECTOR3 * D3DXVec3Minimize(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2)
Definition: d3dx8math.inl:1293
D3DXMATRIX *WINAPI D3DXMatrixScaling(D3DXMATRIX *pOut, FLOAT sx, FLOAT sy, FLOAT sz)
struct D3DXVECTOR4 * LPD3DXVECTOR4
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6742
FLOAT w
Definition: d3dx8math.h:162
D3DXVECTOR4 * D3DXVec4Minimize(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
Definition: d3dx8math.inl:1422
float _24
Definition: d3d8types.h:81
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:8390
D3DXVECTOR3 * D3DXVec3Maximize(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2)
Definition: d3dx8math.inl:1307
GLintptr offset
Definition: glext.h:6560
FLOAT g
Definition: d3dx8math.h:446
Definition: d3dx8math.h:402
FLOAT a
Definition: d3dx8math.h:392
D3DXCOLOR *WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s)
BOOL D3DXMatrixIsIdentity(CONST D3DXMATRIX *pM)
Definition: d3dx8math.inl:1506
D3DXVECTOR3 *WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV)
struct _D3DVECTOR * LPD3DXVECTOR3
Definition: d3dx8math.h:120
D3DXVECTOR2 * D3DXVec2Subtract(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2)
Definition: d3dx8math.inl:1139
FLOAT D3DXVec2LengthSq(CONST D3DXVECTOR2 *pV)
Definition: d3dx8math.inl:1093
D3DXVECTOR4 *WINAPI D3DXVec2Transform(D3DXVECTOR4 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM)
const GLfloat * m
Definition: glext.h:11755
D3DXVECTOR4 *WINAPI D3DXVec4Cross(D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pV3)
D3DXVECTOR2 * D3DXVec2Maximize(D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2)
Definition: d3dx8math.inl:1165
The text renderer interface represents a set of application-defined callbacks that perform rendering ...
Definition: d3d8types.h:57
float _41
Definition: d3d8types.h:83
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6844
D3DXCOLOR * D3DXColorScale(D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s)
Definition: d3dx8math.inl:1691
D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM)
D3DXMATRIX *WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pOut, FLOAT Scaling, CONST D3DXVECTOR3 *pRotationCenter, CONST D3DXQUATERNION *pRotation, CONST D3DXVECTOR3 *pTranslation)
FLOAT x
Definition: d3dx8math.h:76
struct D3DXPLANE D3DXPLANE
D3DXVECTOR3 * D3DXVec3Lerp(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2, FLOAT s)
Definition: d3dx8math.inl:1335
void * memcpy(void *dst, const void *src, size_t len)
Definition: string.c:26
D3DXVECTOR3 * D3DXVec3Cross(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2)
Definition: d3dx8math.inl:1247