/[cvs]/api/include/d3dxcore.h
ViewVC logotype

Annotation of /api/include/d3dxcore.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (vendor branch)
Sun Jul 1 20:47:59 2001 UTC (22 years, 10 months ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
First import

1 bearsoft 1.1 ///////////////////////////////////////////////////////////////////////////
2     //
3     // Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
4     //
5     // File: d3dxcore.h
6     // Content: D3DX core types and functions
7     //
8     ///////////////////////////////////////////////////////////////////////////
9    
10     #ifndef __D3DXCORE_H__
11     #define __D3DXCORE_H__
12    
13     #include <d3d.h>
14     #include <limits.h>
15     #include "d3dxerr.h"
16    
17    
18     typedef struct ID3DXContext *LPD3DXCONTEXT;
19    
20     // {9B74ED7A-BBEF-11d2-9F8E-0000F8080835}
21     DEFINE_GUID(IID_ID3DXContext,
22     0x9b74ed7a, 0xbbef, 0x11d2, 0x9f, 0x8e, 0x0, 0x0, 0xf8, 0x8, 0x8, 0x35);
23    
24    
25     ///////////////////////////////////////////////////////////////////////////
26     // Defines and Enumerators used below:
27     ///////////////////////////////////////////////////////////////////////////
28    
29     //-------------------------------------------------------------------------
30     // D3DX_DEFAULT:
31     // ---------
32     // A predefined value that could be used for any parameter in D3DX APIs or
33     // member functions that is an enumerant or a handle. The D3DX
34     // documentation indicates wherever D3DX_DEFAULT may be used,
35     // and how it will be interpreted in each situation.
36     //-------------------------------------------------------------------------
37     #define D3DX_DEFAULT ULONG_MAX
38    
39     //-------------------------------------------------------------------------
40     // D3DX_DEFAULT_FLOAT:
41     // ------------------
42     // Similar to D3DX_DEFAULT, but used for floating point parameters.
43     // The D3DX documentation indicates wherever D3DX_DEFAULT_FLOAT may be used,
44     // and how it will be interpreted in each situation.
45     //-------------------------------------------------------------------------
46     #define D3DX_DEFAULT_FLOAT FLT_MAX
47    
48     //-------------------------------------------------------------------------
49     // Hardware Acceleration Level:
50     // ---------------------------
51     // These constants represent pre-defined hardware acceleration levels,
52     // and may be used as a default anywhere a (DWORD) deviceIndex is required.
53     // Each pre-define indicates a different level of hardware acceleration.
54     // They are an alternative to using explicit deviceIndices retrieved by
55     // D3DXGetDeviceDescription().
56     //
57     // The only case these pre-defines should be used as device indices is if
58     // a particular level of acceleration is required, and given more than
59     // one capable device on the computer, it does not matter which one
60     // is used.
61     //
62     // The method of selection is as follows: If one of the D3DX devices on
63     // the primary DDraw device supports a requested hardware acceleration
64     // level, it will be used. Otherwise, the first matching device discovered
65     // by D3DX will be used.
66     //
67     // Of course, it is possible for no match to exist for any of the
68     // pre-defines on a particular computer. Passing such a value into the
69     // D3DX apis will simply cause them to fail, reporting that no match
70     // is available.
71     //
72     // D3DX_HWLEVEL_NULL: Null implementation (draws nothing)
73     // D3DX_HWLEVEL_REFERENCE: Reference implementation (slowest)
74     // D3DX_HWLEVEL_2D: 2D acceleration only (RGB rasterizer used)
75     // D3DX_HWLEVEL_RASTER: Rasterization acceleration (likely most useful)
76     // D3DX_HWLEVEL_TL: Transform and lighting acceleration
77     // D3DX_DEFAULT: The highest level of acceleration available
78     // on the primary DDraw device.
79     //-------------------------------------------------------------------------
80     #define D3DX_HWLEVEL_NULL (D3DX_DEFAULT - 1)
81     #define D3DX_HWLEVEL_REFERENCE (D3DX_DEFAULT - 2)
82     #define D3DX_HWLEVEL_2D (D3DX_DEFAULT - 3)
83     #define D3DX_HWLEVEL_RASTER (D3DX_DEFAULT - 4)
84     #define D3DX_HWLEVEL_TL (D3DX_DEFAULT - 5)
85    
86     //-------------------------------------------------------------------------
87     // Surface Class:
88     // -------------
89     // These are the various types of 2D-surfaces classified according to their
90     // usage. Note that a number of them overlap. e.g. STENCILBUFFERS and
91     // DEPTHBUFFERS overlap (since in DX7 implementation the stencil and depth
92     // bits are part of the same pixel format).
93     //
94     // Mapping to the DX7 DDPIXELFORMAT concepts:
95     // -----------------------------------------
96     // D3DX_SC_DEPTHBUFFER: All ddpfs which have the DDPF_ZPIXELS or the
97     // DDPF_ZBUFFER flags set.
98     // D3DX_SC_STENCILBUFFER: All ddpfs which have the DDPF_STENCILBUFFER
99     // flag set.
100     // D3DX_SC_BUMPMAP: All ddpfs which have the DDPF_BUMPLUMINANCE
101     // or the DDPF_BUMPDUDV flags set.
102     // D3DX_SC_LUMINANCEMAP: All ddpfs which have the DDPF_BUMPLUMINANCE
103     // or the DDPF_LUMINANCE flags set.
104     // D3DX_SC_COLORTEXTURE: All the surfaces that have color information in
105     // them and can be used for texturing.
106     // D3DX_SC_COLORRENDERTGT: All the surfaces that contain color
107     // information and can be used as render targets.
108     //-------------------------------------------------------------------------
109     #define D3DX_SC_DEPTHBUFFER 0x01
110     #define D3DX_SC_STENCILBUFFER 0x02
111     #define D3DX_SC_COLORTEXTURE 0x04
112     #define D3DX_SC_BUMPMAP 0x08
113     #define D3DX_SC_LUMINANCEMAP 0x10
114     #define D3DX_SC_COLORRENDERTGT 0x20
115    
116     //-------------------------------------------------------------------------
117     // Surface Formats:
118     // ---------------
119     // These are the various types of surface formats that can be enumerated,
120     // there is no DDPIXELFORMAT structure in D3DX, the enums carry the meaning
121     // (like FOURCCs).
122     //
123     // All the surface classes are represented here.
124     //
125     //-------------------------------------------------------------------------
126     typedef enum _D3DX_SURFACEFORMAT
127     {
128     D3DX_SF_UNKNOWN = 0,
129     D3DX_SF_R8G8B8 = 1,
130     D3DX_SF_A8R8G8B8 = 2,
131     D3DX_SF_X8R8G8B8 = 3,
132     D3DX_SF_R5G6B5 = 4,
133     D3DX_SF_R5G5B5 = 5,
134     D3DX_SF_PALETTE4 = 6,
135     D3DX_SF_PALETTE8 = 7,
136     D3DX_SF_A1R5G5B5 = 8,
137     D3DX_SF_X4R4G4B4 = 9,
138     D3DX_SF_A4R4G4B4 =10,
139     D3DX_SF_L8 =11, // 8 bit luminance-only
140     D3DX_SF_A8L8 =12, // 16 bit alpha-luminance
141     D3DX_SF_U8V8 =13, // 16 bit bump map format
142     D3DX_SF_U5V5L6 =14, // 16 bit bump map format with luminance
143     D3DX_SF_U8V8L8 =15, // 24 bit bump map format with luminance
144     D3DX_SF_UYVY =16, // UYVY format (PC98 compliance)
145     D3DX_SF_YUY2 =17, // YUY2 format (PC98 compliance)
146     D3DX_SF_DXT1 =18, // S3 texture compression technique 1
147     D3DX_SF_DXT3 =19, // S3 texture compression technique 3
148     D3DX_SF_DXT5 =20, // S3 texture compression technique 5
149     D3DX_SF_R3G3B2 =21, // 8 bit RGB texture format
150     D3DX_SF_A8 =22, // 8 bit alpha-only
151     D3DX_SF_TEXTUREMAX =23, // Last texture format
152    
153     D3DX_SF_Z16S0 =256,
154     D3DX_SF_Z32S0 =257,
155     D3DX_SF_Z15S1 =258,
156     D3DX_SF_Z24S8 =259,
157     D3DX_SF_S1Z15 =260,
158     D3DX_SF_S8Z24 =261,
159     D3DX_SF_DEPTHMAX =262, // Last depth format
160    
161     D3DX_SF_FORCEMAX = (DWORD)(-1)
162     } D3DX_SURFACEFORMAT;
163    
164     //-------------------------------------------------------------------------
165     // Filtering types for Texture APIs
166     //
167     // -------------
168     // These are the various filter types for generation of mip-maps
169     //
170     // D3DX_FILTERTYPE
171     // -----------------------------------------
172     // D3DX_FT_POINT: Point sampling only - no filtering
173     // D3DX_FT_LINEAR: Bi-linear filtering
174     //
175     //-------------------------------------------------------------------------
176     typedef enum _D3DX_FILTERTYPE
177     {
178     D3DX_FT_POINT = 0x01,
179     D3DX_FT_LINEAR = 0x02,
180     D3DX_FT_DEFAULT = D3DX_DEFAULT
181     } D3DX_FILTERTYPE;
182    
183     ///////////////////////////////////////////////////////////////////////////
184     // Structures used below:
185     ///////////////////////////////////////////////////////////////////////////
186    
187     //-------------------------------------------------------------------------
188     // D3DX_VIDMODEDESC: Display mode description.
189     // ----------------
190     // width: Screen Width
191     // height: Screen Height
192     // bpp: Bits per pixel
193     // refreshRate: Refresh rate
194     //-------------------------------------------------------------------------
195     typedef struct _D3DX_VIDMODEDESC
196     {
197     DWORD width;
198     DWORD height;
199     DWORD bpp;
200     DWORD refreshRate;
201     } D3DX_VIDMODEDESC;
202    
203     //-------------------------------------------------------------------------
204     // D3DX_DEVICEDESC: Description of a device that can do 3D
205     // ---------------
206     // deviceIndex: Unique (DWORD) number for the device.
207     // hwLevel: Level of acceleration afforded. This is one of the
208     // predefined Device Indices, and exists in this
209     // structure for informational purposes only. More than
210     // one device on the system may have the same hwLevel.
211     // To refer to a particular device with the D3DX apis,
212     // use the value in the deviceIndex member instead.
213     // ddGuid: The ddraw GUID
214     // d3dDeviceGuid: Direct3D Device GUID
215     // ddDeviceID: DDraw's GetDeviceIdentifier GUID. This GUID is unique to
216     // a particular driver revision on a particular video card.
217     // driverDesc: String describing the driver
218     // monitor: Handle to the video monitor used by this device (multimon
219     // specific). Devices that use different monitors on a
220     // multimon system report different values in this field.
221     // Therefore, to test for a multimon system, an application
222     // should look for more than one different monitor handle in
223     // the list of D3DX devices.
224     // onPrimary: Indicates if this device is on the primary monitor
225     // (multimon specific).
226     //-------------------------------------------------------------------------
227     #define D3DX_DRIVERDESC_LENGTH 256
228    
229     typedef struct _D3DX_DEVICEDESC
230     {
231     DWORD deviceIndex;
232     DWORD hwLevel;
233     GUID ddGuid;
234     GUID d3dDeviceGuid;
235     GUID ddDeviceID;
236     char driverDesc[D3DX_DRIVERDESC_LENGTH];
237     HMONITOR monitor;
238     BOOL onPrimary;
239     } D3DX_DEVICEDESC;
240    
241     ///////////////////////////////////////////////////////////////////////////
242     // APIs:
243     ///////////////////////////////////////////////////////////////////////////
244     #ifdef __cplusplus
245     extern "C" {
246     #endif //__cplusplus
247    
248     //-------------------------------------------------------------------------
249     // D3DXInitialize: The very first call a D3DX app must make.
250     //-------------------------------------------------------------------------
251     HRESULT WINAPI
252     D3DXInitialize();
253    
254     //-------------------------------------------------------------------------
255     // D3DXUninitialize: The very last call a D3DX app must make.
256     //-------------------------------------------------------------------------
257     HRESULT WINAPI
258     D3DXUninitialize();
259    
260     //-------------------------------------------------------------------------
261     // D3DXGetDeviceCount: Returns the maximum number of D3DXdevices
262     // ------------------ available.
263     //
264     // D3DXGetDeviceDescription: Lists the 2D and 3D capabilities of the devices.
265     // ------------------------ Also, the various guids needed by ddraw and d3d.
266     //
267     // Params:
268     // [in] DWORD deviceIndex: Which device? Starts at 0.
269     // [in] D3DX_DEVICEDESC* pd3dxDevice: Pointer to the D3DX_DEVICEDESC
270     // structure to be filled in.
271     //-------------------------------------------------------------------------
272     DWORD WINAPI
273     D3DXGetDeviceCount();
274    
275     HRESULT WINAPI
276     D3DXGetDeviceDescription(DWORD deviceIndex,
277     D3DX_DEVICEDESC* pd3dxDeviceDesc);
278    
279     //-------------------------------------------------------------------------
280     // D3DXGetMaxNumVideoModes: Returns the maximum number of video-modes .
281     // -----------------------
282     //
283     // Params:
284     // [in] DWORD deviceIndex: The device being referred to.
285     // [in] DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh
286     // rates are not ignored.
287     //
288     // D3DXGetVideoMode: Describes a particular video mode for this device
289     // ----------------
290     //
291     // Note: These queries will simply give you a list of modes that the
292     // display adapter tells DirectX that it supports.
293     // There is no guarantee that D3DXCreateContext(Ex) will succeed
294     // with all listed video modes. This is a fundamental limitation
295     // of the current DirectX architecture which D3DX cannot hide in
296     // any clean way.
297     //
298     // Params:
299     // [in] DWORD deviceIndex: The device being referred to.
300     // [in] DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh
301     // rates are returned
302     // [in] DWORD which: Which VideoMode ? Starts at 0.
303     // [out] D3DX_VIDMODEDESC* pModeList: Pointer to the D3DX_VIDMODEDESC
304     // structure that will be filled in.
305     //-------------------------------------------------------------------------
306     DWORD WINAPI
307     D3DXGetMaxNumVideoModes(DWORD deviceIndex,
308     DWORD flags);
309    
310     HRESULT WINAPI
311     D3DXGetVideoMode(DWORD deviceIndex,
312     DWORD flags,
313     DWORD modeIndex,
314     D3DX_VIDMODEDESC* pModeDesc);
315    
316     #define D3DX_GVM_REFRESHRATE 0x00000001
317     //-------------------------------------------------------------------------
318     // D3DXGetMaxSurfaceFormats: Returns the maximum number of surface
319     // ------------------------ formats supported by the device at that
320     // video mode.
321     //
322     // D3DXGetSurfaceFormat: Describes one of the supported surface formats.
323     // ---------------------
324     //
325     // Params:
326     // [in] DWORD deviceIndex: The device being referred to.
327     // [in] D3DX_VIDMODEDESC* pDesc: The display mode at which the supported
328     // surface formats are requested. If it is
329     // NULL, the current display mode is
330     // assumed.
331     // [in] DWORD surfClassFlags: Required surface classes. Only surface
332     // formats which support all specified
333     // surface classes will be returned.
334     // (Multiple surface classes may be specified
335     // using bitwise OR.)
336     // [in] DWORD which: Which surface formats to retrieve. Starts at 0.
337     // [out] D3DX_SURFACEFORMAT* pFormat: The surface format
338     //-------------------------------------------------------------------------
339     DWORD WINAPI
340     D3DXGetMaxSurfaceFormats(DWORD deviceIndex,
341     D3DX_VIDMODEDESC* pDesc,
342     DWORD surfClassFlags);
343     HRESULT WINAPI
344     D3DXGetSurfaceFormat(DWORD deviceIndex,
345     D3DX_VIDMODEDESC* pDesc,
346     DWORD surfClassFlags,
347     DWORD surfaceIndex,
348     D3DX_SURFACEFORMAT* pFormat);
349    
350    
351     //-------------------------------------------------------------------------
352     // D3DXGetCurrentVideoMode: Retrieves the current video mode for this device.
353     // -------------------
354     //
355     // Params:
356     // [in] DWORD deviceIndex: The device being referred to.
357     // [out] D3DX_VIDMODEDESC* pVidMode: The current video mode
358     //-------------------------------------------------------------------------
359     HRESULT WINAPI
360     D3DXGetCurrentVideoMode(DWORD deviceIndex,
361     D3DX_VIDMODEDESC* pVidMode);
362    
363     //-------------------------------------------------------------------------
364     // D3DXGetDeviceCaps: Lists all the capabilities of a device at a display
365     // mode.
366     // ----------------
367     //
368     // Params:
369     // [in] DWORD deviceIndex: The device being referred to.
370     // [in] D3DX_VIDMODEDESC* pDesc: If this is NULL, we will return the
371     // caps at the current display mode of
372     // the device.
373     // [out] D3DDEVICEDESC7* pD3DDeviceDesc7: D3D Caps ( NULL to ignore
374     // parameter)
375     // [out] DDCAPS7* pDDHalCaps: DDraw HAL Caps (NULL to ignore parameter)
376     // [out] DDCAPS7* pDDHelCaps: DDraw HEL Caps (NULL to ignore paramter)
377     //-------------------------------------------------------------------------
378     HRESULT WINAPI
379     D3DXGetDeviceCaps(DWORD deviceIndex,
380     D3DX_VIDMODEDESC* pVidMode,
381     D3DDEVICEDESC7* pD3DCaps,
382     DDCAPS* pDDHALCaps,
383     DDCAPS* pDDHELCaps);
384    
385     //-------------------------------------------------------------------------
386     // D3DXCreateContext: Initializes the chosen device. It is the simplest init
387     // ----------------- function available. Parameters are treated the same
388     // as the matching subset of parameters in
389     // D3DXCreateContextEx, documented below.
390     // Remaining D3DXCreateContextEx parameters that are
391     // not present in D3DXCreateContext are treated as
392     // D3DX_DEFAULT. Note that multimon is not supported
393     // with D3DXCreateContext.
394     //
395     // D3DXCreateContextEx: A more advanced function to initialize the device.
396     // ------------------- Also accepts D3DX_DEFAULT for most of the parameters
397     // and then will do what D3DXCreateContext did.
398     //
399     // Note: Do not expect D3DXCreateContext(Ex) to be fail-safe (as with any
400     // API). Supported device capablilites should be used as a guide
401     // for choosing parameter values. Keep in mind that there will
402     // inevitably be some combinations of parameters that just do not work.
403     //
404     // Params:
405     // [in] DWORD deviceIndex: The device being referred to.
406     // [in] DWORD flags: The valid flags are D3DX_CONTEXT_FULLSCREEN, and
407     // D3DX_CONTEXT_OFFSCREEN. These flags cannot both
408     // be specified. If no flags are specified, the
409     // context defaults to windowed mode.
410     //
411     // [in] HWND hwnd: Device window. See note.
412     // [in] HWND hwndFocus: Window which receives keyboard messages from
413     // the device window. The device window should be
414     // a child of focus window. Useful for multimon
415     // applications. See note.
416     // NOTE:
417     // windowed:
418     // hwnd must be a valid window. hwndFocus must be NULL or
419     // D3DX_DEFAULT.
420     //
421     // fullscreen:
422     // Either hwnd or hwndFocus must be a valid window. (Both cannot
423     // be NULL or D3DX_DEFAULT). If hwnd is NULL or D3DX_DEFAULT,
424     // a default device window will be created as a child of hwndFocus.
425     //
426     // offscreen:
427     // Both hwnd and hwndFocus must be NULL or D3DX_DEFAULT
428     //
429     // [in] DWORD numColorBits: If D3DX_DEFAULT is passed for windowed mode,
430     // the current desktop's color depth is chosen.
431     // For full screen mode, D3DX_DEFAULT causes 16
432     // bit color to be used.
433     // [in] DWORD numAlphaBits: If D3DX_DEFAULT is passed, 0 is chosen.
434     // [in] DWORD numDepthbits: If D3DX_DEFAULT is passed,
435     // the highest available number of depth bits
436     // is chosen. See note.
437     // [in] DWORD numStencilBits: If D3DX_DEFAULT is passed, the highest
438     // available number of stencil bits is chosen.
439     // See note.
440     //
441     // NOTE: If both numDepthBits and numStencilBits are D3DX_DEFAULT,
442     // D3DX first picks the highest available number of stencil
443     // bits. Then, for the chosen number of stencil bits,
444     // the highest available number of depth bits is chosen.
445     // If only one of numStencilBits or numDepthBits
446     // is D3DX_DEFAULT, the highest number of bits available
447     // for this parameter is chosen out of only the formats
448     // that support the number of bits requested for the
449     // fixed parameter.
450     //
451     // [in] DWORD numBackBuffers: Number of back buffers, or D3DX_DEFAULT.
452     // See note.
453     //
454     // NOTE:
455     // windowed: D3DX_DEFAULT means 1. You must specify one back buffer.
456     //
457     // fullscreen: D3DX_DEFAULT means 1. Any number of back buffers can be
458     // specified.
459     //
460     // offscreen: D3DX_DEFAULT means 0. You cannot specify additional back
461     // buffers.
462     //
463     // [in] DWORD width: Width, in pixels, or D3DX_DEFAULT. See note.
464     // [in] DWORD height: Height, in pixels, or D3DX_DEFAULT. See note.
465     //
466     // NOTE:
467     // windowed: If either width or height is D3DX_DEFAULT, both values
468     // default to the dimensions of the client area of hwnd.
469     //
470     // fullscreen: If either width or height is D3DX_DEFAULT, width
471     // defaults to 640, and height defaults to 480.
472     //
473     // offscreen: An error is returned if either width or height is
474     // D3DX_DEFAULT.
475     //
476     // [in] DWORD refreshRate: D3DX_DEFAULT means we let ddraw choose for
477     // us. Ignored for windowed and offscreen modes.
478     // [out] LPD3DXCONTEXT* ppCtx: This is the Context object that is used for
479     // rendering on that device.
480     //
481     //-------------------------------------------------------------------------
482     HRESULT WINAPI
483     D3DXCreateContext(DWORD deviceIndex,
484     DWORD flags,
485     HWND hwnd,
486     DWORD width,
487     DWORD height,
488     LPD3DXCONTEXT* ppCtx);
489    
490     HRESULT WINAPI
491     D3DXCreateContextEx(DWORD deviceIndex,
492     DWORD flags,
493     HWND hwnd,
494     HWND hwndFocus,
495     DWORD numColorBits,
496     DWORD numAlphaBits,
497     DWORD numDepthbits,
498     DWORD numStencilBits,
499     DWORD numBackBuffers,
500     DWORD width,
501     DWORD height,
502     DWORD refreshRate,
503     LPD3DXCONTEXT* ppCtx);
504    
505     // The D3DXCreateContext(Ex) flags are:
506     #define D3DX_CONTEXT_FULLSCREEN 0x00000001
507     #define D3DX_CONTEXT_OFFSCREEN 0x00000002
508    
509     //-------------------------------------------------------------------------
510     // D3DXGetErrorString: Prints out the error string given an hresult. Prints
511     // ------------------ Win32 as well as DX6 error messages besides the D3DX
512     // messages.
513     //
514     // Params:
515     // [in] HRESULT hr: The error code to be deciphered.
516     // [in] DWORD strLength: Length of the string passed in.
517     // [out] LPSTR pStr: The string output. This string of appropriate
518     // size needs to be passed in.
519     //-------------------------------------------------------------------------
520     void WINAPI
521     D3DXGetErrorString(HRESULT hr,
522     DWORD strLength,
523     LPSTR pStr);
524    
525     //-------------------------------------------------------------------------
526     // D3DXMakeDDPixelFormat: Fills in a DDPIXELFORMAT structure based on the
527     // --------------------- D3DX surface format requested.
528     //
529     // Params:
530     // [in] D3DX_SURFACEFORMAT d3dxFormat: Surface format.
531     // [out] DDPIXELFORMAT* pddpf: Pixel format matching the given
532     // surface format.
533     //-------------------------------------------------------------------------
534     HRESULT WINAPI
535     D3DXMakeDDPixelFormat(D3DX_SURFACEFORMAT d3dxFormat,
536     DDPIXELFORMAT* pddpf);
537    
538     //-------------------------------------------------------------------------
539     // D3DXMakeSurfaceFormat: Determines the surface format corresponding to
540     // --------------------- a given DDPIXELFORMAT.
541     //
542     // Params:
543     // [in] DDPIXELFORMAT* pddpf: Pixel format.
544     // Return Value:
545     // D3DX_SURFACEFORMAT: Surface format matching the given pixel format.
546     // D3DX_SF_UNKNOWN if the format is not supported
547     //-------------------------------------------------------------------------
548     D3DX_SURFACEFORMAT WINAPI
549     D3DXMakeSurfaceFormat(DDPIXELFORMAT* pddpf);
550    
551     #ifdef __cplusplus
552     }
553     #endif //__cplusplus
554    
555     ///////////////////////////////////////////////////////////////////////////
556     // Interfaces:
557     ///////////////////////////////////////////////////////////////////////////
558    
559     //-------------------------------------------------------------------------
560     // ID3DXContext interface:
561     //
562     // This encapsulates all the stuff that the app might
563     // want to do at initialization time and any global control over d3d and
564     // ddraw.
565     //-------------------------------------------------------------------------
566    
567    
568     DECLARE_INTERFACE_(ID3DXContext, IUnknown)
569     {
570     //
571     // IUnknown methods
572     //
573     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE;
574     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
575     STDMETHOD_(ULONG,Release)(THIS) PURE;
576    
577     // Get the DDraw and Direct3D objects to call DirectDraw or
578     // Direct3D Immediate Mode functions.
579     // If the objects don't exist (because they have not
580     // been created for some reason) NULL is returned.
581     // All the objects returned in the following Get* functions
582     // are addref'ed. It is the application's responsibility to
583     // release them when no longer needed.
584     STDMETHOD_(LPDIRECTDRAW7,GetDD)(THIS) PURE;
585     STDMETHOD_(LPDIRECT3D7,GetD3D)(THIS) PURE;
586     STDMETHOD_(LPDIRECT3DDEVICE7,GetD3DDevice)(THIS) PURE;
587    
588     // Get the various buffers that get created at the init time
589     // These are addref'ed as well. It is the application's responsibility
590     // to release them before the app quits or when it needs a resize.
591     STDMETHOD_(LPDIRECTDRAWSURFACE7,GetPrimary)(THIS) PURE;
592     STDMETHOD_(LPDIRECTDRAWSURFACE7,GetZBuffer)(THIS) PURE;
593     STDMETHOD_(LPDIRECTDRAWSURFACE7,GetBackBuffer)(THIS_ DWORD which) PURE;
594    
595     // Get the associated window handles
596     STDMETHOD_(HWND,GetWindow)(THIS) PURE;
597     STDMETHOD_(HWND,GetFocusWindow)(THIS) PURE;
598    
599     //
600     // Various Get methods, in case the user had specified default
601     // parameters
602     //
603     STDMETHOD(GetDeviceIndex)(THIS_
604     LPDWORD pDeviceIndex,
605     LPDWORD pHwLevel) PURE;
606    
607     STDMETHOD_(DWORD, GetNumBackBuffers)(THIS) PURE;
608    
609     STDMETHOD(GetNumBits)(THIS_
610     LPDWORD pColorBits,
611     LPDWORD pDepthBits,
612     LPDWORD pAlphaBits,
613     LPDWORD pStencilBits) PURE;
614    
615     STDMETHOD(GetBufferSize)(THIS_
616     LPDWORD pWidth,
617     LPDWORD pHeight) PURE;
618    
619     // Get the flags that were used to create this context
620     STDMETHOD_(DWORD, GetCreationFlags)(THIS) PURE;
621     STDMETHOD_(DWORD, GetRefreshRate)(THIS) PURE;
622    
623     // Restoring surfaces in case stuff is lost
624     STDMETHOD(RestoreSurfaces)(THIS) PURE;
625    
626     // Resize all the buffers to the new width and height
627     STDMETHOD(Resize)(THIS_ DWORD width, DWORD height) PURE;
628    
629     // Update the frame using a flip or a blit,
630     // If the D3DX_UPDATE_NOVSYNC flag is set, blit is used if the
631     // driver cannot flip without waiting for vsync in full-screen mode.
632     STDMETHOD(UpdateFrame)(THIS_ DWORD flags) PURE;
633    
634     // Render a string at the specified coordinates, with the specified
635     // colour. This is only provided as a convenience for
636     // debugging/information during development.
637     // topLeftX and topLeftY represent the location of the top left corner
638     // of the string, on the render target.
639     // The coordinate and color parameters each have a range of 0.0-1.0
640     STDMETHOD(DrawDebugText)(THIS_
641     float topLeftX,
642     float topLeftY,
643     D3DCOLOR color,
644     LPSTR pString) PURE;
645    
646     // Clears to the current viewport
647     // The following are the valid flags:
648     // D3DCLEAR_TARGET (to clear the render target )
649     // D3DCLEAR_ZBUFFER (to clear the depth-buffer )
650     // D3DCLEAR_STENCIL (to clear the stencil-buffer )
651     STDMETHOD(Clear)(THIS_ DWORD ClearFlags) PURE;
652    
653     STDMETHOD(SetClearColor)(THIS_ D3DCOLOR color ) PURE;
654     STDMETHOD(SetClearDepth)(THIS_ float z) PURE;
655     STDMETHOD(SetClearStencil)(THIS_ DWORD stencil) PURE;
656     };
657    
658    
659     //-------------------------------------------------------------------------
660     // Flags for Update member function:
661     //
662    
663     // Flag to indicate that blit should be used instead of a flip
664     // for full-screen rendering.
665     #define D3DX_UPDATE_NOVSYNC (1<<0)
666    
667     ///////////////////////////////////////////////////////////////////////////
668     // Texturing APIs:
669     ///////////////////////////////////////////////////////////////////////////
670     #ifdef __cplusplus
671     extern "C" {
672     #endif //__cplusplus
673    
674     //-------------------------------------------------------------------------
675     // D3DXCheckTextureRequirements: Return information about texture creation
676     // ---------------------------- (used by CreateTexture, CreateTextureFromFile
677     // and CreateCubeMapTexture)
678     //
679     // Parameters:
680     //
681     // pd3dDevice
682     // The D3D device with which the texture is going to be used.
683     // pFlags
684     // allows specification of D3DX_TEXTURE_NOMIPMAP
685     // D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation
686     // is not supported.
687     // pWidth
688     // width in pixels or NULL
689     // returns corrected width
690     // pHeight
691     // height in pixels or NULL
692     // returns corrected height
693     // pPixelFormat
694     // surface format
695     // returns best match to input format
696     //
697     // Notes: 1. Unless the flags is set to specifically prevent creating
698     // mipmaps, mipmaps are generated all the way till 1x1 surface.
699     // 2. width, height and pixelformat are altered based on available
700     // hardware. For example:
701     // a. Texture dimensions may be required to be powers of 2
702     // b. We may require width == height for some devices
703     // c. If PixelFormat is unavailable, a best fit is made
704     //-------------------------------------------------------------------------
705     HRESULT WINAPI
706     D3DXCheckTextureRequirements( LPDIRECT3DDEVICE7 pd3dDevice,
707     LPDWORD pFlags,
708     LPDWORD pWidth,
709     LPDWORD pHeight,
710     D3DX_SURFACEFORMAT* pPixelFormat);
711    
712     //-------------------------------------------------------------------------
713     // D3DXCreateTexture: Create an empty texture object
714     // -----------------
715     //
716     // Parameters:
717     //
718     // pd3dDevice
719     // The D3D device with which the texture is going to be used.
720     // pFlags
721     // allows specification of D3DX_TEXTURE_NOMIPMAP
722     // D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation
723     // is not supported. Additionally, D3DX_TEXTURE_STAGE<n> can be specified
724     // to indicate which texture stage the texture is for e.g.
725     // D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture
726     // stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
727     // set.
728     // pWidth
729     // width in pixels; 0 or NULL is unacceptable
730     // returns corrected width
731     // pHeight
732     // height in pixels; 0 or NULL is unacceptable
733     // returns corrected height
734     // pPixelFormat
735     // surface format. D3DX_DEFAULT is unacceptable.
736     // returns actual format that was used
737     // pDDPal
738     // DDraw palette that is set (if present) on paletted surfaces.
739     // It is ignored even if it is set, for non-paletted surfaces.
740     // ppDDSurf
741     // The ddraw surface that will be created
742     // pNumMipMaps
743     // the number of mipmaps actually generated
744     //
745     // Notes: See notes for D3DXCheckTextureRequirements.
746     //-------------------------------------------------------------------------
747     HRESULT WINAPI
748     D3DXCreateTexture( LPDIRECT3DDEVICE7 pd3dDevice,
749     LPDWORD pFlags,
750     LPDWORD pWidth,
751     LPDWORD pHeight,
752     D3DX_SURFACEFORMAT* pPixelFormat,
753     LPDIRECTDRAWPALETTE pDDPal,
754     LPDIRECTDRAWSURFACE7* ppDDSurf,
755     LPDWORD pNumMipMaps);
756    
757     //-------------------------------------------------------------------------
758     // D3DXCreateCubeMapTexture: Create blank cube-map texture
759     // ------------------------
760     //
761     // Parameters:
762     //
763     // pd3dDevice
764     // The D3D device with which the texture is going to be used.
765     // pFlags
766     // allows specification of D3DX_TEXTURE_NOMIPMAP
767     // D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation
768     // is not supported. Additionally, D3DX_TEXTURE_STAGE<n> can be specified
769     // to indicate which texture stage the texture is for e.g.
770     // D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture
771     // stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
772     // set.
773     // cubefaces
774     // allows specification of which faces of the cube-map to generate.
775     // D3DX_DEFAULT, 0, and DDSCAPS2_CUBEMAP_ALLFACES all mean
776     // "create all 6 faces of the cubemap". Any combination of
777     // DDSCAPS2_CUBEMAP_POSITIVEX, DDSCAPS2_CUBEMAP_NEGATIVEX,
778     // DDSCAPS2_CUBEMAP_POSITIVEY, DDSCAPS2_CUBEMAP_NEGATIVEY,
779     // DDSCAPS2_CUBEMAP_POSITIVEZ, or DDSCAPS2_CUBEMAP_NEGATIVEZ, is
780     // valid.
781     // colorEmptyFaces
782     // allows specification of the color to use for the faces that were not
783     // specified in the cubefaces parameter.
784     // pWidth
785     // width in pixels; 0 or NULL is unacceptable
786     // returns corrected width
787     // pHeight
788     // height in pixels; 0 or NULL is unacceptable
789     // returns corrected height
790     // pPixelFormat
791     // surface format. D3DX_DEFAULT is unacceptable.
792     // returns actual format that was used
793     // pDDPal
794     // DDraw palette that is set (if present) on paletted surfaces.
795     // It is ignored even if it is set, for non-paletted surfaces.
796     // ppDDSurf
797     // the ddraw surface that will be created
798     // pNumMipMaps
799     // the number of mipmaps generated for a particular face of the
800     // cubemap.
801     //
802     // Notes: See notes for D3DXCheckTextureRequirements.
803     //-------------------------------------------------------------------------
804     HRESULT WINAPI
805     D3DXCreateCubeMapTexture( LPDIRECT3DDEVICE7 pd3dDevice,
806     LPDWORD pFlags,
807     DWORD cubefaces,
808     D3DCOLOR colorEmptyFaces,
809     LPDWORD pWidth,
810     LPDWORD pHeight,
811     D3DX_SURFACEFORMAT *pPixelFormat,
812     LPDIRECTDRAWPALETTE pDDPal,
813     LPDIRECTDRAWSURFACE7* ppDDSurf,
814     LPDWORD pNumMipMaps);
815    
816    
817     //-------------------------------------------------------------------------
818     // D3DXCreateTextureFromFile: Create a texture object from a file or from the
819     // ------------------------- resource. Only BMP and DIB are supported from the
820     // resource portion of the executable.
821     //
822     // Parameters:
823     //
824     // pd3dDevice
825     // The D3D device with which the texture is going to be used.
826     // pFlags
827     // allows specification of D3DX_TEXTURE_NOMIPMAP
828     // D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation
829     // is not supported. Additionally, D3DX_TEXTURE_STAGE<n> can be specified
830     // to indicate which texture stage the texture is for e.g.
831     // D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture
832     // stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
833     // set.
834     // pWidth
835     // Width in pixels. If 0 or D3DX_DEFAULT, the width will be taken
836     // from the file
837     // returns corrected width
838     // pHeight
839     // Height in pixels. If 0 or D3DX_DEFAULT, the height will be taken
840     // from the file
841     // returns corrected height
842     // pPixelFormat
843     // If D3DX_SF_UNKNOWN is passed in, pixel format closest to the bitmap
844     // will be chosen
845     // returns actual format that was used
846     // pDDPal
847     // DDraw palette that is set (if present) on paletted surfaces.
848     // It is ignored even if it is set, for non-paletted surfaces.
849     // ppDDSurf
850     // The ddraw surface that will be created.
851     // pNumMipMaps
852     // The number of mipmaps generated.
853     // pSrcName
854     // File name. BMP, DIB, DDS, are supported.
855     //
856     // TGA is supported for the following cases: 16, 24, 32bpp direct color and 8bpp palettized.
857     // Also, 8, 16bpp grayscale is supported. RLE versions of the above
858     // TGA formats are also supported. ColorKey and Premultiplied Alpha
859     // are not currently supported for TGA files.
860     // returns created format
861     //
862     // Notes: See notes for D3DXCheckTextureRequirements.
863     //-------------------------------------------------------------------------
864     HRESULT WINAPI
865     D3DXCreateTextureFromFile( LPDIRECT3DDEVICE7 pd3dDevice,
866     LPDWORD pFlags,
867     LPDWORD pWidth,
868     LPDWORD pHeight,
869     D3DX_SURFACEFORMAT* pPixelFormat,
870     LPDIRECTDRAWPALETTE pDDPal,
871     LPDIRECTDRAWSURFACE7* ppDDSurf,
872     LPDWORD pNumMipMaps,
873     LPSTR pSrcName,
874     D3DX_FILTERTYPE filterType);
875    
876     //-------------------------------------------------------------------------
877     // D3DXLoadTextureFromFile: Load from a file into a mipmap level. Doing the
878     // ----------------------- necessary color conversion and rescaling. File
879     // format support is identical to
880     // D3DXCreateTextureFromFile's.
881     //
882     // pd3dDevice
883     // The D3D device with which the texture is going to be used.
884     // pTexture
885     // a pointer to a DD7Surface which was created with either
886     // CreateTextureFromFile or CreateTexture.
887     // mipMapLevel
888     // indicates mipmap level
889     // Note:
890     // 1. Error if mipmap level doesn't exist
891     // 2. If D3DX_DEFAULT and equal number of mipmap levels exist
892     // then all the source mip-levels are loaded
893     // 3. If the source has mipmaps and the dest doesn't, use the top one
894     // 4. If the dest has miplevels and source doesn't, we expand
895     // 5. If there are unequal numbers of miplevels, we expand
896     // pSrcName
897     // File name. BMP, DIB, DDS, are supported.
898     // For details on TGA support, refer to the comments for
899     // D3DXCreateTextureFromFile
900     // pSrcRect
901     // the source rectangle or null (whole surface)
902     // pDestRect
903     // the destination rectangle or null (whole surface)
904     // filterType
905     // filter used for mipmap generation
906     //-------------------------------------------------------------------------
907     HRESULT WINAPI
908     D3DXLoadTextureFromFile( LPDIRECT3DDEVICE7 pd3dDevice,
909     LPDIRECTDRAWSURFACE7 pTexture,
910     DWORD mipMapLevel,
911     LPSTR pSrcName,
912     RECT* pSrcRect,
913     RECT* pDestRect,
914     D3DX_FILTERTYPE filterType);
915    
916     //-------------------------------------------------------------------------
917     // D3DXLoadTextureFromSurface: Load from a DDraw Surface into a mipmap level.
918     // -------------------------- Doing the necessary color conversion.
919     //
920     // pd3dDevice
921     // The D3D device with which the texture is going to be used.
922     // pTexture
923     // a pointer to a DD7Surface which was created with either
924     // CreateTextureFromFile or CreateTexture.
925     // mipMapLevel
926     // indicates mipmap level
927     // Note:
928     // 1. Error if mipmap level doesn't exist
929     // 2. If D3DX_DEFAULT and equal number of mipmap levels exist
930     // then all the source mip-levels are loaded
931     // 3. If the source has mipmaps and the dest doesn't, use the top one
932     // 4. If the dest has miplevels and source doesn't, we expand
933     // 5. If there are unequal numbers of miplevels, we expand
934     // pSurfaceSrc
935     // the source surface
936     // pSrcRect
937     // the source rectangle or null (whole surface)
938     // pDestRect
939     // the destination rectangle or null (whole surface)
940     // filterType
941     // filter used for mipmap generation
942     //-------------------------------------------------------------------------
943     HRESULT WINAPI
944     D3DXLoadTextureFromSurface( LPDIRECT3DDEVICE7 pd3dDevice,
945     LPDIRECTDRAWSURFACE7 pTexture,
946     DWORD mipMapLevel,
947     LPDIRECTDRAWSURFACE7 pSurfaceSrc,
948     RECT* pSrcRect,
949     RECT* pDestRect,
950     D3DX_FILTERTYPE filterType);
951    
952     //-------------------------------------------------------------------------
953     // D3DXLoadTextureFromMemory: Load a mip level from memory. Doing the necessary
954     // ------------------------- color conversion.
955     //
956     // pd3dDevice
957     // The D3D device with which the texture is going to be used.
958     // pTexture
959     // a pointer to a DD7Surface which was created with either
960     // CreateTextureFromFile or CreateTexture.
961     // mipMapLevel
962     // indicates mipmap level
963     // Note:
964     // 1. Error if mipmap level doesn't exist
965     // 2. If D3DX_DEFAULT and equal number of mipmap levels exist
966     // then all the source mip-levels are loaded
967     // 3. If the source has mipmaps and the dest doesn't, use the top one
968     // 4. If the dest has miplevels and source doesn't, we expand
969     // 5. If there are unequal numbers of miplevels, we expand
970     // pMemory
971     // pointer to source memory from which the texture will be loaded
972     // pDDPal
973     // DirectDraw Palette, that the app passes in optionally if the memory is
974     // supposed to be paletteized.
975     // srcPixelFormat
976     // PixelFormat of the source.
977     // srcPitch
978     // The pitch of the memory or D3DX_DEFAULT (based on srcPixelFormat)
979     // pDestRect
980     // The destination rectangle or null (whole surface)
981     // filterType
982     // filter used for mipmap generation
983     //
984     // Assumptions: The source (memory) is loaded in full
985     //-------------------------------------------------------------------------
986     HRESULT WINAPI
987     D3DXLoadTextureFromMemory( LPDIRECT3DDEVICE7 pd3dDevice,
988     LPDIRECTDRAWSURFACE7 pTexture,
989     DWORD mipMapLevel,
990     LPVOID pMemory,
991     LPDIRECTDRAWPALETTE pDDPal,
992     D3DX_SURFACEFORMAT srcPixelFormat,
993     DWORD srcPitch,
994     RECT* pDestRect,
995     D3DX_FILTERTYPE filterType);
996    
997     #ifdef __cplusplus
998     }
999     #endif //__cplusplus
1000    
1001     //-------------------------------------------------------------------------
1002     // Flags for texture create functions; applies to
1003     // D3DXCreateTexture, D3DXCreateCubeMapTexture and D3DXCreateTextureFromFile.
1004     //
1005    
1006     // Flag to indicate that mipmap generation is not desired.
1007     #define D3DX_TEXTURE_NOMIPMAP (1 << 8)
1008    
1009     // Flags to indicate which texture stage the texture is
1010     // intended for use with. Specifying the stage is necessary at
1011     // texture creation time for HW devices that expose the
1012     // D3DDEVCAPS_SEPARATETEXTUREMEMORIES bit in their D3DDEVICEDESC
1013     // structure.
1014     #define D3DX_TEXTURE_STAGE0 (0)
1015     #define D3DX_TEXTURE_STAGE1 (1)
1016     #define D3DX_TEXTURE_STAGE2 (2)
1017     #define D3DX_TEXTURE_STAGE3 (3)
1018     #define D3DX_TEXTURE_STAGE4 (4)
1019     #define D3DX_TEXTURE_STAGE5 (5)
1020     #define D3DX_TEXTURE_STAGE6 (6)
1021     #define D3DX_TEXTURE_STAGE7 (7)
1022    
1023     // Mask to extract the texture stage value out of the flags to
1024     // the texture create functions.
1025     #define D3DX_TEXTURE_STAGE_MASK (0x7)
1026    
1027     #endif //__D3DXCORE_H__

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26