/**************************************************************************** * * 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