| /**************************************************************************** |
| * |
| * Mesa 3-D graphics library |
| * Direct3D Driver Interface |
| * |
| * ======================================================================== |
| * |
| * Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved. |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a |
| * copy of this software and associated documentation files (the "Software"), |
| * to deal in the Software without restriction, including without limitation |
| * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| * and/or sell copies of the Software, and to permit persons to whom the |
| * Software is furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included |
| * in all copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| * SCITECH SOFTWARE INC BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
| * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF |
| * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| * |
| * ====================================================================== |
| * |
| * Language: ANSI C |
| * Environment: Windows 9x (Win32) |
| * |
| * Description: Globals. |
| * |
| ****************************************************************************/ |
| |
| #ifndef __DGLGLOBALS_H |
| #define __DGLGLOBALS_H |
| |
| #include "dglcontext.h" |
| #include "dglpf.h" // Pixel format |
| #ifndef _USE_GLD3_WGL |
| #include "d3dtexture.h" |
| #endif |
| |
| /*---------------------- Macros and type definitions ----------------------*/ |
| |
| typedef enum { |
| DGL_RENDER_MESASW = 0, |
| DGL_RENDER_D3D = 1, |
| DGL_RENDER_FORCE_DWORD = 0x7ffffff, |
| } DGL_renderType; |
| |
| #ifdef _USE_GLD3_WGL |
| |
| // Same as DGL_renderType? KeithH |
| typedef enum { |
| GLDS_DRIVER_MESA_SW = 0, // Mesa SW rendering |
| GLDS_DRIVER_REF = 1, // Direct3D Reference Rasteriser |
| GLDS_DRIVER_HAL = 2, // Direct3D HW rendering |
| } GLDS_DRIVER; |
| |
| typedef enum { |
| GLDS_TNL_DEFAULT = 0, // Choose best TnL method |
| GLDS_TNL_MESA = 1, // Mesa TnL |
| GLDS_TNL_D3DSW = 2, // D3D Software TnL |
| GLDS_TNL_D3DHW = 3, // D3D Hardware TnL |
| } GLDS_TNL; |
| |
| typedef enum { |
| GLDS_MULTISAMPLE_NONE = 0, |
| GLDS_MULTISAMPLE_FASTEST = 1, |
| GLDS_MULTISAMPLE_NICEST = 2, |
| } GLDS_MULTISAMPLE; |
| #endif |
| |
| typedef struct { |
| // Registry settings |
| char szDDName[MAX_DDDEVICEID_STRING]; // DirectDraw device name |
| char szD3DName[MAX_DDDEVICEID_STRING]; // Direct3D driver name |
| BOOL bPrimary; // Is ddraw device the Primary device? |
| BOOL bHardware; // Is the d3d driver a Hardware driver? |
| #ifndef _USE_GLD3_WGL |
| GUID ddGuid; // GUID of the ddraw device |
| GUID d3dGuid; // GUID of the direct3d driver |
| #endif // _USE_GLD3_WGL |
| // BOOL bFullscreen; // Force fullscreen - only useful for primary adaptors. |
| BOOL bSquareTextures; // Does this driver require square textures? |
| DWORD dwRendering; // Type of rendering required |
| |
| BOOL bWaitForRetrace; // Sync to vertical retrace |
| BOOL bFullscreenBlit; // Use Blt instead of Flip in fullscreen modes |
| |
| // Multitexture |
| BOOL bMultitexture; |
| |
| BOOL bUseMipmaps; |
| |
| DWORD dwMemoryType; // Sysmem or Vidmem |
| |
| // Global palette |
| BOOL bPAL8; |
| DDPIXELFORMAT ddpfPAL8; |
| |
| // Multitexture |
| WORD wMaxSimultaneousTextures; |
| |
| // Win32 internals |
| BOOL bAppActive; // Keep track of Alt-Tab |
| LONG lpfnWndProc; // WndProc of calling app |
| |
| // Pixel Format Descriptior list. |
| int nPixelFormatCount; |
| DGL_pixelFormat *lpPF; |
| #ifndef _USE_GLD3_WGL |
| // ZBuffer pixel formats |
| int nZBufferPFCount; // Count of Zbuffer pixel formats |
| DDPIXELFORMAT *lpZBufferPF; // ZBuffer pixel formats |
| |
| // Display modes (for secondary devices) |
| int nDisplayModeCount; |
| DDSURFACEDESC2 *lpDisplayModes; |
| |
| // Texture pixel formats |
| int nTextureFormatCount; |
| DGL_textureFormat *lpTextureFormat; |
| #endif // _USE_GLD3_WGL |
| // Alpha emulation via chroma key |
| BOOL bEmulateAlphaTest; |
| |
| // Geom pipeline override. |
| // If this is set TRUE then the D3D pipeline will never be used, |
| // and the Mesa pipline will always be used. |
| BOOL bForceMesaPipeline; |
| |
| #ifdef _USE_GLD3_WGL |
| BOOL bPixelformatsDirty; // Signal a list rebuild |
| #endif |
| |
| // Additional globals to support multiple GL rendering contexts, GLRCs |
| BOOL bDirectDraw; // DirectDraw interface exists ? |
| BOOL bDirectDrawPrimary; // DirectDraw primary surface exists ? |
| BOOL bDirect3D; // Direct3D interface exists ? |
| BOOL bDirect3DDevice; // Direct3D device exists ? |
| |
| BOOL bDirectDrawStereo; // DirectDraw Stereo driver started ? |
| int iDirectDrawStereo; // DirectDraw Stereo driver reference count |
| HWND hWndActive; // copy of active window |
| |
| // Copies of DirectX COM interfaces for re-referencing across multiple GLRCs |
| // IDirectDraw4 *lpDD4; // copy of DirectDraw interface |
| // IDirectDrawSurface4 *lpPrimary4; // copy of DirectDraw primary surface |
| // IDirectDrawSurface4 *lpBack4; |
| // IDirectDrawSurface4 *lpDepth4; |
| // IDirectDrawPalette *lpGlobalPalette; |
| |
| // Aids for heavy-duty MFC-windowed OGL apps, like AutoCAD |
| BOOL bMessageBoxWarnings; // popup message box warning |
| BOOL bDirectDrawPersistant; // DirectDraw is persisitant |
| BOOL bPersistantBuffers; // DirectDraw buffers persisitant |
| |
| // FPU setup option for CAD precision (AutoCAD) vs GAME speed (Quake) |
| BOOL bFastFPU; // single-precision-only FPU ? |
| |
| // Hot-Key support, like for real-time stereo parallax adjustments |
| BOOL bHotKeySupport; // hot-key support ? |
| |
| // Multi-threaded support, for apps like 3DStudio |
| BOOL bMultiThreaded; // multi-threaded ? |
| |
| // Detect and use app-specific customizations for apps like 3DStudio |
| BOOL bAppCustomizations; // app customizations ? |
| |
| #ifdef _USE_GLD3_WGL |
| DWORD dwAdapter; // Primary DX8 adapter |
| DWORD dwTnL; // MesaSW TnL |
| DWORD dwMultisample; // Multisample Off |
| DWORD dwDriver; // Direct3D HW |
| void *pDrvPrivate; // Driver-specific data |
| #endif |
| |
| } DGL_globals; |
| |
| /*------------------------- Function Prototypes ---------------------------*/ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| DGL_globals glb; |
| |
| void dglInitGlobals(); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |