VirtualBox

source: vbox/trunk/src/VBox/Devices/Graphics/shaderlib/wine/include/d3dx9math.h

最後變更 在這個檔案是 53206,由 vboxsync 提交於 10 年 前

Devices/vmsvga: header fixes

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 23.9 KB
 
1/*
2 * Copyright (C) 2007 David Adam
3 * Copyright (C) 2007 Tony Wasserka
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19
20/*
21 * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
22 * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
23 * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
24 * a choice of LGPL license versions is made available with the language indicating
25 * that LGPLv2 or any later version may be used, or where a choice of which version
26 * of the LGPL is applied is otherwise unspecified.
27 */
28
29#include <d3dx9.h>
30
31#ifndef __D3DX9MATH_H__
32#define __D3DX9MATH_H__
33
34#include <math.h>
35
36#define D3DX_PI ((FLOAT)3.141592654)
37#define D3DX_1BYPI ((FLOAT)0.318309886)
38
39#define D3DXSH_MINORDER 2
40#define D3DXSH_MAXORDER 6
41
42#define D3DXToRadian(degree) ((degree) * (D3DX_PI / 180.0f))
43#define D3DXToDegree(radian) ((radian) * (180.0f / D3DX_PI))
44
45typedef struct D3DXVECTOR2
46{
47#ifdef __cplusplus
48 D3DXVECTOR2();
49 D3DXVECTOR2(const FLOAT *pf);
50 D3DXVECTOR2(FLOAT fx, FLOAT fy);
51
52 operator FLOAT* ();
53 operator const FLOAT* () const;
54
55 D3DXVECTOR2& operator += (const D3DXVECTOR2&);
56 D3DXVECTOR2& operator -= (const D3DXVECTOR2&);
57 D3DXVECTOR2& operator *= (FLOAT);
58 D3DXVECTOR2& operator /= (FLOAT);
59
60 D3DXVECTOR2 operator + () const;
61 D3DXVECTOR2 operator - () const;
62
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
70 BOOL operator == (const D3DXVECTOR2&) const;
71 BOOL operator != (const D3DXVECTOR2&) const;
72#endif /* __cplusplus */
73 FLOAT x, y;
74} D3DXVECTOR2, *LPD3DXVECTOR2;
75
76#ifdef __cplusplus
77typedef struct D3DXVECTOR3 : public D3DVECTOR
78{
79 D3DXVECTOR3();
80 D3DXVECTOR3(const FLOAT *pf);
81 D3DXVECTOR3(const D3DVECTOR& v);
82 D3DXVECTOR3(FLOAT fx, FLOAT fy, FLOAT fz);
83
84 operator FLOAT* ();
85 operator const FLOAT* () const;
86
87 D3DXVECTOR3& operator += (const D3DXVECTOR3&);
88 D3DXVECTOR3& operator -= (const D3DXVECTOR3&);
89 D3DXVECTOR3& operator *= (FLOAT);
90 D3DXVECTOR3& operator /= (FLOAT);
91
92 D3DXVECTOR3 operator + () const;
93 D3DXVECTOR3 operator - () const;
94
95 D3DXVECTOR3 operator + (const D3DXVECTOR3&) const;
96 D3DXVECTOR3 operator - (const D3DXVECTOR3&) const;
97 D3DXVECTOR3 operator * (FLOAT) const;
98 D3DXVECTOR3 operator / (FLOAT) const;
99
100 friend D3DXVECTOR3 operator * (FLOAT, const struct D3DXVECTOR3&);
101
102 BOOL operator == (const D3DXVECTOR3&) const;
103 BOOL operator != (const D3DXVECTOR3&) const;
104} D3DXVECTOR3, *LPD3DXVECTOR3;
105#else /* !__cplusplus */
106typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
107#endif /* !__cplusplus */
108
109typedef struct D3DXVECTOR4
110{
111#ifdef __cplusplus
112 D3DXVECTOR4();
113 D3DXVECTOR4(const FLOAT *pf);
114 D3DXVECTOR4(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
115
116 operator FLOAT* ();
117 operator const FLOAT* () const;
118
119 D3DXVECTOR4& operator += (const D3DXVECTOR4&);
120 D3DXVECTOR4& operator -= (const D3DXVECTOR4&);
121 D3DXVECTOR4& operator *= (FLOAT);
122 D3DXVECTOR4& operator /= (FLOAT);
123
124 D3DXVECTOR4 operator + () const;
125 D3DXVECTOR4 operator - () const;
126
127 D3DXVECTOR4 operator + (const D3DXVECTOR4&) const;
128 D3DXVECTOR4 operator - (const D3DXVECTOR4&) const;
129 D3DXVECTOR4 operator * (FLOAT) const;
130 D3DXVECTOR4 operator / (FLOAT) const;
131
132 friend D3DXVECTOR4 operator * (FLOAT, const D3DXVECTOR4&);
133
134 BOOL operator == (const D3DXVECTOR4&) const;
135 BOOL operator != (const D3DXVECTOR4&) const;
136#endif /* __cplusplus */
137 FLOAT x, y, z, w;
138} D3DXVECTOR4, *LPD3DXVECTOR4;
139
140#ifdef __cplusplus
141typedef struct D3DXMATRIX : public D3DMATRIX
142{
143 D3DXMATRIX();
144 D3DXMATRIX(const FLOAT *pf);
145 D3DXMATRIX(const D3DMATRIX& mat);
146 D3DXMATRIX(FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
147 FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
148 FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
149 FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44);
150
151 FLOAT& operator () (UINT row, UINT col);
152 FLOAT operator () (UINT row, UINT col) const;
153
154 operator FLOAT* ();
155 operator const FLOAT* () const;
156
157 D3DXMATRIX& operator *= (const D3DXMATRIX&);
158 D3DXMATRIX& operator += (const D3DXMATRIX&);
159 D3DXMATRIX& operator -= (const D3DXMATRIX&);
160 D3DXMATRIX& operator *= (FLOAT);
161 D3DXMATRIX& operator /= (FLOAT);
162
163 D3DXMATRIX operator + () const;
164 D3DXMATRIX operator - () const;
165
166 D3DXMATRIX operator * (const D3DXMATRIX&) const;
167 D3DXMATRIX operator + (const D3DXMATRIX&) const;
168 D3DXMATRIX operator - (const D3DXMATRIX&) const;
169 D3DXMATRIX operator * (FLOAT) const;
170 D3DXMATRIX operator / (FLOAT) const;
171
172 friend D3DXMATRIX operator * (FLOAT, const D3DXMATRIX&);
173
174 BOOL operator == (const D3DXMATRIX&) const;
175 BOOL operator != (const D3DXMATRIX&) const;
176} D3DXMATRIX, *LPD3DXMATRIX;
177#else /* !__cplusplus */
178typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
179#endif /* !__cplusplus */
180
181typedef struct D3DXQUATERNION
182{
183#ifdef __cplusplus
184 D3DXQUATERNION();
185 D3DXQUATERNION(const FLOAT *pf);
186 D3DXQUATERNION(FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw);
187
188 operator FLOAT* ();
189 operator const FLOAT* () const;
190
191 D3DXQUATERNION& operator += (const D3DXQUATERNION&);
192 D3DXQUATERNION& operator -= (const D3DXQUATERNION&);
193 D3DXQUATERNION& operator *= (const D3DXQUATERNION&);
194 D3DXQUATERNION& operator *= (FLOAT);
195 D3DXQUATERNION& operator /= (FLOAT);
196
197 D3DXQUATERNION operator + () const;
198 D3DXQUATERNION operator - () const;
199
200 D3DXQUATERNION operator + (const D3DXQUATERNION&) const;
201 D3DXQUATERNION operator - (const D3DXQUATERNION&) const;
202 D3DXQUATERNION operator * (const D3DXQUATERNION&) const;
203 D3DXQUATERNION operator * (FLOAT) const;
204 D3DXQUATERNION operator / (FLOAT) const;
205
206 friend D3DXQUATERNION operator * (FLOAT, const D3DXQUATERNION&);
207
208 BOOL operator == (const D3DXQUATERNION&) const;
209 BOOL operator != (const D3DXQUATERNION&) const;
210#endif /* __cplusplus */
211 FLOAT x, y, z, w;
212} D3DXQUATERNION, *LPD3DXQUATERNION;
213
214typedef struct D3DXPLANE
215{
216#ifdef __cplusplus
217 D3DXPLANE();
218 D3DXPLANE(const FLOAT *pf);
219 D3DXPLANE(FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd);
220
221 operator FLOAT* ();
222 operator const FLOAT* () const;
223
224 D3DXPLANE operator + () const;
225 D3DXPLANE operator - () const;
226
227 BOOL operator == (const D3DXPLANE&) const;
228 BOOL operator != (const D3DXPLANE&) const;
229#endif /* __cplusplus */
230 FLOAT a, b, c, d;
231} D3DXPLANE, *LPD3DXPLANE;
232
233typedef struct D3DXCOLOR
234{
235#ifdef __cplusplus
236 D3DXCOLOR();
237 D3DXCOLOR(DWORD col);
238 D3DXCOLOR(const FLOAT *pf);
239 D3DXCOLOR(const D3DCOLORVALUE& col);
240 D3DXCOLOR(FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa);
241
242 operator DWORD () const;
243
244 operator FLOAT* ();
245 operator const FLOAT* () const;
246
247 operator D3DCOLORVALUE* ();
248 operator const D3DCOLORVALUE* () const;
249
250 operator D3DCOLORVALUE& ();
251 operator const D3DCOLORVALUE& () const;
252
253 D3DXCOLOR& operator += (const D3DXCOLOR&);
254 D3DXCOLOR& operator -= (const D3DXCOLOR&);
255 D3DXCOLOR& operator *= (FLOAT);
256 D3DXCOLOR& operator /= (FLOAT);
257
258 D3DXCOLOR operator + () const;
259 D3DXCOLOR operator - () const;
260
261 D3DXCOLOR operator + (const D3DXCOLOR&) const;
262 D3DXCOLOR operator - (const D3DXCOLOR&) const;
263 D3DXCOLOR operator * (FLOAT) const;
264 D3DXCOLOR operator / (FLOAT) const;
265
266 friend D3DXCOLOR operator * (FLOAT, const D3DXCOLOR&);
267
268 BOOL operator == (const D3DXCOLOR&) const;
269 BOOL operator != (const D3DXCOLOR&) const;
270#endif /* __cplusplus */
271 FLOAT r, g, b, a;
272} D3DXCOLOR, *LPD3DXCOLOR;
273
274typedef struct D3DXFLOAT16
275{
276#ifdef __cplusplus
277 D3DXFLOAT16();
278 D3DXFLOAT16(FLOAT f);
279 D3DXFLOAT16(const D3DXFLOAT16 &f);
280
281 operator FLOAT ();
282
283 BOOL operator == (const D3DXFLOAT16 &) const;
284 BOOL operator != (const D3DXFLOAT16 &) const;
285#endif /* __cplusplus */
286 WORD value;
287} D3DXFLOAT16, *LPD3DXFLOAT16;
288
289#ifdef __cplusplus
290extern "C" {
291#endif
292
293D3DXCOLOR* WINAPI D3DXColorAdjustContrast(D3DXCOLOR *pout, const D3DXCOLOR *pc, FLOAT s);
294D3DXCOLOR* WINAPI D3DXColorAdjustSaturation(D3DXCOLOR *pout, const D3DXCOLOR *pc, FLOAT s);
295
296FLOAT WINAPI D3DXFresnelTerm(FLOAT costheta, FLOAT refractionindex);
297
298D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation(D3DXMATRIX *pout, FLOAT scaling, const D3DXVECTOR3 *rotationcenter, const D3DXQUATERNION *rotation,
299 const D3DXVECTOR3 *translation);
300D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation2D(D3DXMATRIX *pout, FLOAT scaling, const D3DXVECTOR2 *protationcenter, FLOAT rotation,
301 const D3DXVECTOR2 *ptranslation);
302HRESULT WINAPI D3DXMatrixDecompose(D3DXVECTOR3 *poutscale, D3DXQUATERNION *poutrotation, D3DXVECTOR3 *pouttranslation, const D3DXMATRIX *pm);
303FLOAT WINAPI D3DXMatrixDeterminant(const D3DXMATRIX *pm);
304D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, const D3DXMATRIX *pm);
305D3DXMATRIX* WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pout, const D3DXVECTOR3 *peye, const D3DXVECTOR3 *pat, const D3DXVECTOR3 *pup);
306D3DXMATRIX* WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pout, const D3DXVECTOR3 *peye, const D3DXVECTOR3 *pat, const D3DXVECTOR3 *pup);
307D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, const D3DXMATRIX *pm1, const D3DXMATRIX *pm2);
308D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, const D3DXMATRIX *pm1, const D3DXMATRIX *pm2);
309D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
310D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
311D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
312D3DXMATRIX* WINAPI D3DXMatrixOrthoRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
313D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
314D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf);
315D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
316D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
317D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
318D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
319D3DXMATRIX* WINAPI D3DXMatrixReflect(D3DXMATRIX *pout, const D3DXPLANE *pplane);
320D3DXMATRIX* WINAPI D3DXMatrixRotationAxis(D3DXMATRIX *pout, const D3DXVECTOR3 *pv, FLOAT angle);
321D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion(D3DXMATRIX *pout, const D3DXQUATERNION *pq);
322D3DXMATRIX* WINAPI D3DXMatrixRotationX(D3DXMATRIX *pout, FLOAT angle);
323D3DXMATRIX* WINAPI D3DXMatrixRotationY(D3DXMATRIX *pout, FLOAT angle);
324D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
325D3DXMATRIX* WINAPI D3DXMatrixRotationZ(D3DXMATRIX *pout, FLOAT angle);
326D3DXMATRIX* WINAPI D3DXMatrixScaling(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT sz);
327D3DXMATRIX* WINAPI D3DXMatrixShadow(D3DXMATRIX *pout, const D3DXVECTOR4 *plight, const D3DXPLANE *pPlane);
328D3DXMATRIX* WINAPI D3DXMatrixTransformation(D3DXMATRIX *pout, const D3DXVECTOR3 *pscalingcenter, const D3DXQUATERNION *pscalingrotation, const D3DXVECTOR3 *pscaling, const D3DXVECTOR3 *protationcenter,
329 const D3DXQUATERNION *protation, const D3DXVECTOR3 *ptranslation);
330D3DXMATRIX* WINAPI D3DXMatrixTransformation2D(D3DXMATRIX *pout, const D3DXVECTOR2 *pscalingcenter, FLOAT scalingrotation, const D3DXVECTOR2 *pscaling,
331 const D3DXVECTOR2 *protationcenter, FLOAT rotation, const D3DXVECTOR2 *ptranslation);
332D3DXMATRIX* WINAPI D3DXMatrixTranslation(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLOAT z);
333D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, const D3DXMATRIX *pm);
334
335D3DXPLANE* WINAPI D3DXPlaneFromPointNormal(D3DXPLANE *pout, const D3DXVECTOR3 *pvpoint, const D3DXVECTOR3 *pvnormal);
336D3DXPLANE* WINAPI D3DXPlaneFromPoints(D3DXPLANE *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2, const D3DXVECTOR3 *pv3);
337D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine(D3DXVECTOR3 *pout, const D3DXPLANE *pp, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2);
338D3DXPLANE* WINAPI D3DXPlaneNormalize(D3DXPLANE *pout, const D3DXPLANE *pp);
339D3DXPLANE* WINAPI D3DXPlaneTransform(D3DXPLANE *pout, const D3DXPLANE *pplane, const D3DXMATRIX *pm);
340D3DXPLANE* WINAPI D3DXPlaneTransformArray(D3DXPLANE *pout, UINT outstride, const D3DXPLANE *pplane, UINT pstride, const D3DXMATRIX *pm, UINT n);
341
342D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric(D3DXQUATERNION *pout, const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2, const D3DXQUATERNION *pq3, FLOAT f, FLOAT g);
343D3DXQUATERNION* WINAPI D3DXQuaternionExp(D3DXQUATERNION *pout, const D3DXQUATERNION *pq);
344D3DXQUATERNION* WINAPI D3DXQuaternionInverse(D3DXQUATERNION *pout, const D3DXQUATERNION *pq);
345D3DXQUATERNION* WINAPI D3DXQuaternionLn(D3DXQUATERNION *pout, const D3DXQUATERNION *pq);
346D3DXQUATERNION* WINAPI D3DXQuaternionMultiply(D3DXQUATERNION *pout, const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2);
347D3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, const D3DXQUATERNION *pq);
348D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis(D3DXQUATERNION *pout, const D3DXVECTOR3 *pv, FLOAT angle);
349D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix(D3DXQUATERNION *pout, const D3DXMATRIX *pm);
350D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll);
351D3DXQUATERNION* WINAPI D3DXQuaternionSlerp(D3DXQUATERNION *pout, const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2, FLOAT t);
352D3DXQUATERNION* WINAPI D3DXQuaternionSquad(D3DXQUATERNION *pout, const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2, const D3DXQUATERNION *pq3,
353 const D3DXQUATERNION *pq4, FLOAT t);
354void WINAPI D3DXQuaternionSquadSetup(D3DXQUATERNION *paout, D3DXQUATERNION *pbout, D3DXQUATERNION *pcout, const D3DXQUATERNION *pq0,
355 const D3DXQUATERNION *pq1, const D3DXQUATERNION *pq2, const D3DXQUATERNION *pq3);
356void WINAPI D3DXQuaternionToAxisAngle(const D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle);
357
358D3DXVECTOR2* WINAPI D3DXVec2BaryCentric(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2, const D3DXVECTOR2 *pv3, FLOAT f, FLOAT g);
359D3DXVECTOR2* WINAPI D3DXVec2CatmullRom(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv0, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pv2, const D3DXVECTOR2 *pv3, FLOAT s);
360D3DXVECTOR2* WINAPI D3DXVec2Hermite(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv1, const D3DXVECTOR2 *pt1, const D3DXVECTOR2 *pv2, const D3DXVECTOR2 *pt2, FLOAT s);
361D3DXVECTOR2* WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv);
362D3DXVECTOR4* WINAPI D3DXVec2Transform(D3DXVECTOR4 *pout, const D3DXVECTOR2 *pv, const D3DXMATRIX *pm);
363D3DXVECTOR4* WINAPI D3DXVec2TransformArray(D3DXVECTOR4 *pout, UINT outstride, const D3DXVECTOR2 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
364D3DXVECTOR2* WINAPI D3DXVec2TransformCoord(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv, const D3DXMATRIX *pm);
365D3DXVECTOR2* WINAPI D3DXVec2TransformCoordArray(D3DXVECTOR2 *pout, UINT outstride, const D3DXVECTOR2 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
366D3DXVECTOR2* WINAPI D3DXVec2TransformNormal(D3DXVECTOR2 *pout, const D3DXVECTOR2 *pv, const D3DXMATRIX *pm);
367D3DXVECTOR2* WINAPI D3DXVec2TransformNormalArray(D3DXVECTOR2 *pout, UINT outstride, const D3DXVECTOR2 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
368
369D3DXVECTOR3* WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2, const D3DXVECTOR3 *pv3, FLOAT f, FLOAT g);
370D3DXVECTOR3* WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv0, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pv2, const D3DXVECTOR3 *pv3, FLOAT s);
371D3DXVECTOR3* WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv1, const D3DXVECTOR3 *pt1, const D3DXVECTOR3 *pv2, const D3DXVECTOR3 *pt2, FLOAT s);
372D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv);
373D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DVIEWPORT9 *pviewport, const D3DXMATRIX *pprojection,
374 const D3DXMATRIX *pview, const D3DXMATRIX *pworld);
375D3DXVECTOR3* WINAPI D3DXVec3ProjectArray(D3DXVECTOR3 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DVIEWPORT9 *pviewport,
376 const D3DXMATRIX *pprojection, const D3DXMATRIX *pview, const D3DXMATRIX *pworld, UINT n);
377D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm);
378D3DXVECTOR4* WINAPI D3DXVec3TransformArray(D3DXVECTOR4 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
379D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm);
380D3DXVECTOR3* WINAPI D3DXVec3TransformCoordArray(D3DXVECTOR3 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
381D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm);
382D3DXVECTOR3* WINAPI D3DXVec3TransformNormalArray(D3DXVECTOR3 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
383D3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DVIEWPORT9 *pviewport, const D3DXMATRIX *pprojection,
384 const D3DXMATRIX *pview, const D3DXMATRIX *pworld);
385D3DXVECTOR3* WINAPI D3DXVec3UnprojectArray(D3DXVECTOR3 *pout, UINT outstride, const D3DXVECTOR3 *pv, UINT vstride, const D3DVIEWPORT9 *pviewport,
386 const D3DXMATRIX *pprojection, const D3DXMATRIX *pview, const D3DXMATRIX *pworld, UINT n);
387D3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2, const D3DXVECTOR4 *pv3, FLOAT f, FLOAT g);
388D3DXVECTOR4* WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv0, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2, const D3DXVECTOR4 *pv3, FLOAT s);
389D3DXVECTOR4* WINAPI D3DXVec4Cross(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pv2, const D3DXVECTOR4 *pv3);
390D3DXVECTOR4* WINAPI D3DXVec4Hermite(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv1, const D3DXVECTOR4 *pt1, const D3DXVECTOR4 *pv2, const D3DXVECTOR4 *pt2, FLOAT s);
391D3DXVECTOR4* WINAPI D3DXVec4Normalize(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv);
392D3DXVECTOR4* WINAPI D3DXVec4Transform(D3DXVECTOR4 *pout, const D3DXVECTOR4 *pv, const D3DXMATRIX *pm);
393D3DXVECTOR4* WINAPI D3DXVec4TransformArray(D3DXVECTOR4 *pout, UINT outstride, const D3DXVECTOR4 *pv, UINT vstride, const D3DXMATRIX *pm, UINT n);
394
395D3DXFLOAT16 *WINAPI D3DXFloat32To16Array(D3DXFLOAT16 *pout, const FLOAT *pin, UINT n);
396FLOAT *WINAPI D3DXFloat16To32Array(FLOAT *pout, const D3DXFLOAT16 *pin, UINT n);
397
398FLOAT* WINAPI D3DXSHAdd(FLOAT *out, UINT order, const FLOAT *a, const FLOAT *b);
399FLOAT WINAPI D3DXSHDot(UINT order, const FLOAT *a, const FLOAT *b);
400HRESULT WINAPI D3DXSHEvalConeLight(UINT order, const D3DXVECTOR3 *dir, FLOAT radius, FLOAT Rintensity, FLOAT Gintensity, FLOAT Bintensity, FLOAT *rout, FLOAT *gout, FLOAT *bout);
401FLOAT* WINAPI D3DXSHEvalDirection(FLOAT *out, UINT order, const D3DXVECTOR3 *dir);
402HRESULT WINAPI D3DXSHEvalDirectionalLight(UINT order, const D3DXVECTOR3 *dir, FLOAT Rintensity, FLOAT Gintensity, FLOAT Bintensity, FLOAT *rout, FLOAT *gout, FLOAT *bout);
403HRESULT WINAPI D3DXSHEvalHemisphereLight(UINT order, const D3DXVECTOR3 *dir, D3DXCOLOR top, D3DXCOLOR bottom, FLOAT *rout, FLOAT *gout, FLOAT *bout);
404HRESULT WINAPI D3DXSHEvalSphericalLight(UINT order, const D3DXVECTOR3 *dir, FLOAT radius, FLOAT Rintensity, FLOAT Gintensity, FLOAT Bintensity, FLOAT *rout, FLOAT *gout, FLOAT *bout);
405FLOAT* WINAPI D3DXSHMultiply2(FLOAT *out, const FLOAT *a, const FLOAT *b);
406FLOAT* WINAPI D3DXSHMultiply3(FLOAT *out, const FLOAT *a, const FLOAT *b);
407FLOAT* WINAPI D3DXSHMultiply4(FLOAT *out, const FLOAT *a, const FLOAT *b);
408FLOAT* WINAPI D3DXSHRotate(FLOAT *out, UINT order, const D3DXMATRIX *matrix, const FLOAT *in);
409FLOAT* WINAPI D3DXSHRotateZ(FLOAT *out, UINT order, FLOAT angle, const FLOAT *in);
410FLOAT* WINAPI D3DXSHScale(FLOAT *out, UINT order, const FLOAT *a, const FLOAT scale);
411
412#ifdef __cplusplus
413}
414#endif
415
416typedef interface ID3DXMatrixStack *LPD3DXMATRIXSTACK;
417
418DEFINE_GUID(IID_ID3DXMatrixStack,
4190xc7885ba7, 0xf990, 0x4fe7, 0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85);
420
421#undef INTERFACE
422#define INTERFACE ID3DXMatrixStack
423
424DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
425{
426 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **out) PURE;
427 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
428 STDMETHOD_(ULONG,Release)(THIS) PURE;
429 STDMETHOD(Pop)(THIS) PURE;
430 STDMETHOD(Push)(THIS) PURE;
431 STDMETHOD(LoadIdentity)(THIS) PURE;
432 STDMETHOD(LoadMatrix)(THIS_ const D3DXMATRIX* pM ) PURE;
433 STDMETHOD(MultMatrix)(THIS_ const D3DXMATRIX* pM ) PURE;
434 STDMETHOD(MultMatrixLocal)(THIS_ const D3DXMATRIX* pM ) PURE;
435 STDMETHOD(RotateAxis)(THIS_ const D3DXVECTOR3* pV, FLOAT Angle) PURE;
436 STDMETHOD(RotateAxisLocal)(THIS_ const D3DXVECTOR3* pV, FLOAT Angle) PURE;
437 STDMETHOD(RotateYawPitchRoll)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
438 STDMETHOD(RotateYawPitchRollLocal)(THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
439 STDMETHOD(Scale)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
440 STDMETHOD(ScaleLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
441 STDMETHOD(Translate)(THIS_ FLOAT x, FLOAT y, FLOAT z ) PURE;
442 STDMETHOD(TranslateLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
443 STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE;
444};
445
446#undef INTERFACE
447
448#if !defined(__cplusplus) || defined(CINTERFACE)
449
450#define ID3DXMatrixStack_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
451#define ID3DXMatrixStack_AddRef(p) (p)->lpVtbl->AddRef(p)
452#define ID3DXMatrixStack_Release(p) (p)->lpVtbl->Release(p)
453#define ID3DXMatrixStack_Pop(p) (p)->lpVtbl->Pop(p)
454#define ID3DXMatrixStack_Push(p) (p)->lpVtbl->Push(p)
455#define ID3DXMatrixStack_LoadIdentity(p) (p)->lpVtbl->LoadIdentity(p)
456#define ID3DXMatrixStack_LoadMatrix(p,a) (p)->lpVtbl->LoadMatrix(p,a)
457#define ID3DXMatrixStack_MultMatrix(p,a) (p)->lpVtbl->MultMatrix(p,a)
458#define ID3DXMatrixStack_MultMatrixLocal(p,a) (p)->lpVtbl->MultMatrixLocal(p,a)
459#define ID3DXMatrixStack_RotateAxis(p,a,b) (p)->lpVtbl->RotateAxis(p,a,b)
460#define ID3DXMatrixStack_RotateAxisLocal(p,a,b) (p)->lpVtbl->RotateAxisLocal(p,a,b)
461#define ID3DXMatrixStack_RotateYawPitchRoll(p,a,b,c) (p)->lpVtbl->RotateYawPitchRoll(p,a,b,c)
462#define ID3DXMatrixStack_RotateYawPitchRollLocal(p,a,b,c) (p)->lpVtbl->RotateYawPitchRollLocal(p,a,b,c)
463#define ID3DXMatrixStack_Scale(p,a,b,c) (p)->lpVtbl->Scale(p,a,b,c)
464#define ID3DXMatrixStack_ScaleLocal(p,a,b,c) (p)->lpVtbl->ScaleLocal(p,a,b,c)
465#define ID3DXMatrixStack_Translate(p,a,b,c) (p)->lpVtbl->Translate(p,a,b,c)
466#define ID3DXMatrixStack_TranslateLocal(p,a,b,c) (p)->lpVtbl->TranslateLocal(p,a,b,c)
467#define ID3DXMatrixStack_GetTop(p) (p)->lpVtbl->GetTop(p)
468
469#endif
470
471#ifdef __cplusplus
472extern "C" {
473#endif
474
475HRESULT WINAPI D3DXCreateMatrixStack(DWORD flags, ID3DXMatrixStack **stack);
476
477#ifdef __cplusplus
478}
479#endif
480
481#include <d3dx9math.inl>
482
483#endif /* __D3DX9MATH_H__ */
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette