⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dglcontext.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
字号:
/******************************************************************************                        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:  OpenGL context handling.*****************************************************************************/#ifndef __DGLCONTEXT_H#define __DGLCONTEXT_H// Disable compiler complaints about DLL linkage#pragma warning (disable:4273)// Macros to control compilation#ifndef STRICT#define STRICT#endif // STRICT#define WIN32_LEAN_AND_MEAN#include <windows.h>#include <GL\gl.h>#ifdef _USE_GLD3_WGL	#include "dglmacros.h"	#include "dglglobals.h"	#include "pixpack.h"	#include "ddlog.h"	#include "dglpf.h"	#include "context.h"	// Mesa context#else	#include <ddraw.h>	#include <d3d.h>	#include "dglmacros.h"	#include "dglglobals.h"	#include "pixpack.h"	#include "ddlog.h"	#include "dglpf.h"	#include "d3dvertex.h"	#include "DirectGL.h"	#include "context.h"	// Mesa context	#include "vb.h"			// Mesa vertex buffer#endif // _USE_GLD3_WGL/*---------------------- Macros and type definitions ----------------------*/// TODO: Use a list instead of this constant!#define DGL_MAX_CONTEXTS 32// Structure for describing an OpenGL context#ifdef _USE_GLD3_WGLtypedef struct {	BOOL				bHasBeenCurrent;	DGL_pixelFormat		*lpPF;	// Pointer to private driver data (this also contains the drawable).	void				*glPriv;	// Mesa vars:	GLcontext			*glCtx;			// The core Mesa context	GLvisual			*glVis;			// Describes the color buffer	GLframebuffer		*glBuffer;		// Ancillary buffers	GLuint				ClearIndex;	GLuint				CurrentIndex;	GLubyte				ClearColor[4];	GLubyte				CurrentColor[4];	BOOL				EmulateSingle;	// Emulate single-buffering	BOOL				bDoubleBuffer;	BOOL				bDepthBuffer;	// Shared driver vars:	BOOL				bAllocated;    BOOL				bFullscreen;	// Is this a fullscreen context?    BOOL				bSceneStarted;	// Has a lpDev->BeginScene been issued?    BOOL				bCanRender;		// Flag: states whether rendering is OK	BOOL				bFrameStarted;	// Has frame update started at all?	BOOL				bStencil;		// TRUE if this context has stencil	BOOL				bGDIEraseBkgnd; // GDI Erase Background command	// Window information	HWND				hWnd;			// Window handle	HDC					hDC;			// Windows' Device Context of the window	DWORD				dwWidth;		// Window width	DWORD				dwHeight;		// Window height	DWORD				dwBPP;			// Window bits-per-pixel;	RECT				rcScreenRect;	// Screen rectangle	DWORD				dwModeWidth;	// Display mode width	DWORD				dwModeHeight;	// Display mode height	float				dvClipX;	float				dvClipY;	LONG				lpfnWndProc;	// window message handler function} DGL_ctx;#define GLD_context			DGL_ctx#define GLD_GET_CONTEXT(c)	(GLD_context*)(c)->DriverCtx#else // _USE_GLD3_WGLtypedef struct {	BOOL				bHasBeenCurrent;	DGL_pixelFormat		*lpPF;	//	// Mesa context vars:	//	GLcontext			*glCtx;			// The core Mesa context	GLvisual			*glVis;			// Describes the color buffer	GLframebuffer		*glBuffer;		// Ancillary buffers	GLuint				ClearIndex;	GLuint				CurrentIndex;	GLubyte				ClearColor[4];	GLubyte				CurrentColor[4];	BOOL				EmulateSingle;	// Emulate single-buffering	BOOL				bDoubleBuffer;	BOOL				bDepthBuffer;	int					iZBufferPF;		// Index of Zbuffer pixel format	// Vertex buffer: one-to-one correlation with Mesa's vertex buffer.	// This will be filled by our setup function (see d3dvsetup.c)	DGL_TLvertex		gWin[VB_SIZE];	// Transformed and lit vertices//	DGL_Lvertex			gObj[VB_SIZE];	// Lit vertices in object coordinates.	// Indices for DrawIndexedPrimitive.	// Clipped quads are drawn seperately, so use VB_SIZE.	// 6 indices are needed to make 2 triangles for each possible quad//	WORD				wIndices[(VB_SIZE / 4) * 6];	WORD				wIndices[32768];	//	// Device driver vars:	//	BOOL				bAllocated;    BOOL				bFullscreen;	// Is this a fullscreen context?    BOOL				bSceneStarted;	// Has a lpDev->BeginScene been issued?    BOOL				bCanRender;		// Flag: states whether rendering is OK	BOOL				bFrameStarted;	// Has frame update started at all?    // DirectX COM interfaces, postfixed with the interface number	IDirectDraw				*lpDD1;	IDirectDraw4			*lpDD4;	IDirect3D3				*lpD3D3;	IDirect3DDevice3		*lpDev3;	IDirect3DViewport3		*lpViewport3;	IDirectDrawSurface4		*lpFront4;	IDirectDrawSurface4		*lpBack4;	IDirectDrawSurface4		*lpDepth4;	// Vertex buffers	BOOL					bD3DPipeline; // True if using D3D geometry pipeline	IDirect3DVertexBuffer	*m_vbuf;	// Unprocessed vertices	IDirect3DVertexBuffer	*m_pvbuf;	// Processed vertices ready to be rendered	D3DTEXTUREOP		ColorOp[MAX_TEXTURE_UNITS]; // Used for re-enabling texturing	D3DTEXTUREOP		AlphaOp[MAX_TEXTURE_UNITS]; // Used for re-enabling texturing	struct gl_texture_object *tObj[MAX_TEXTURE_UNITS];	DDCAPS				ddCaps;			// DirectDraw caps	D3DDEVICEDESC		D3DDevDesc;		// Direct3D Device description	DDPIXELFORMAT		ddpfRender;		// Pixel format of the render buffer	DDPIXELFORMAT		ddpfDepth;		// Pixel format of the depth buffer	BOOL				bStencil;		// TRUE is this context has stencil	PX_packFunc			fnPackFunc;		// Pixel packing function for SW	PX_unpackFunc		fnUnpackFunc;	// Pixel unpacking function for SW	PX_packSpanFunc		fnPackSpanFunc;	// Pixel span packer	D3DVIEWPORT2		d3dViewport;	// D3D Viewport object	D3DCULL				cullmode;		// Direct3D cull mode	D3DCOLOR			curcolor;		// Current color	DWORD				dwColorPF;		// Current color, in format of target surface	D3DCOLOR			d3dClearColor;	// Clear color	D3DCOLOR			ConstantColor;	// For flat shading	DWORD				dwClearColorPF;	// Clear color, in format of target surface	BOOL				bGDIEraseBkgnd; // GDI Erase Background command	// Primitive caches//	DGL_vertex			LineCache[DGL_MAX_LINE_VERTS];//	DGL_vertex			TriCache[DGL_MAX_TRI_VERTS];//	DWORD				dwNextLineVert;//	DWORD				dwNextTriVert;	// Window information	HWND				hWnd;			// Window handle	HDC					hDC;			// Windows' Device Context of the window	DWORD				dwWidth;		// Window width	DWORD				dwHeight;		// Window height	DWORD				dwBPP;			// Window bits-per-pixel;	RECT				rcScreenRect;	// Screen rectangle	DWORD				dwModeWidth;	// Display mode width	DWORD				dwModeHeight;	// Display mode height	float				dvClipX;	float				dvClipY;	LONG				lpfnWndProc;	// window message handler function	// Shared texture palette	IDirectDrawPalette	*lpGlobalPalette;	// Usage counters.	// One of these counters will be incremented when we choose	// between hardware and software rendering functions.//	DWORD				dwHWUsageCount;	// Hardware usage count//	DWORD				dwSWUsageCount;	// Software usage count	// Texture state flags.//	BOOL				m_texturing;		// TRUE is texturing//	BOOL				m_mtex;				// TRUE if multitexture//	BOOL				m_texHandleValid;	// TRUE if tex state valid	// Renderstate caches to ensure no redundant state changes	DWORD				dwRS[256];		// Renderstates	DWORD				dwTSS[2][24];	// Texture-stage states	LPDIRECT3DTEXTURE2	lpTex[2];		// Texture (1 per stage)	DWORD				dwMaxTextureSize;	// Max texture size:											// clamped to 1024.} DGL_ctx;#endif // _USE_GLD3_WGL/*------------------------- Function Prototypes ---------------------------*/#ifdef  __cplusplusextern "C" {#endifHHOOK	hKeyHook;LRESULT CALLBACK dglKeyProc(int code,WPARAM wParam,LPARAM lParam);void		dglInitContextState();void		dglDeleteContextState();BOOL 		dglIsValidContext(HGLRC a);DGL_ctx*	dglGetContextAddress(const HGLRC a);HDC 		dglGetCurrentDC(void);HGLRC 		dglGetCurrentContext(void);HGLRC		dglCreateContext(HDC a, const DGL_pixelFormat *lpPF);BOOL		dglMakeCurrent(HDC a, HGLRC b);BOOL		dglDeleteContext(HGLRC a);BOOL		dglSwapBuffers(HDC hDC);#ifdef  __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -