2017-04-17 06:17:10 -06:00

216 lines
5.1 KiB
C
Executable File

#ifndef _D3DGL_H_
#define _D3DGL_H_
#define D3D_OVERLOADS
#ifndef __D3DX_H__
#include "d3dx.h"
#endif
#ifndef _GLLIST_H_
#include "platformWin32/gllist.h"
#endif
#ifndef _PLATFORMGL_H_
#include "platformWin32/platformGL.h"
#endif
#define M_2PI (3.1415926535897932384626433 * 2.0)
#define mDegToRad(d) ((d*M_PI) / 180.0)
/* Multitexture extensions */
#define GL_TEXTURE0_SGIS 0x835E
#define GL_TEXTURE1_SGIS 0x835F
#define GL_TEXTURE2_SGIS 0x8360
#define GL_TEXTURE3_SGIS 0x8361
#define MAXGLTEXHANDLES 4096
struct QuakeVertex {
D3DVALUE x, y, z;
D3DVALUE nx, ny, nz;
D3DCOLOR color;
};
struct QuakeTVertex {
D3DVALUE x, y, z;
D3DVALUE nx, ny, nz;
D3DCOLOR color;
D3DVALUE tu, tv;
};
struct QuakeMTVertex {
D3DVALUE x, y, z;
D3DVALUE nx, ny, nz;
D3DCOLOR color;
D3DVALUE tu, tv, tu2, tv2;
};
struct QuakeFMTVertex {
D3DVALUE x, y, z;
D3DVALUE nx, ny, nz;
D3DCOLOR diffuse;
D3DCOLOR specular;
D3DVALUE tu, tv, tu2, tv2;
};
struct TransformedQuakeVertex {
D3DVALUE x, y, z, rhw;
D3DCOLOR color;
D3DVALUE tu, tv, tu2, tv2;
};
#define QUAKEVFMT (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE)
#define QUAKETVFMT (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1)
#define QUAKEMTVFMT (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX2)
#define QUAKEFMTVFMT (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX2 | D3DFVF_SPECULAR)
#define QUAKETRVFMT (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX2)
#define VBUFSIZE 2048
#define MAXVERTSPERPRIM 128
#define RESPATH_QUAKE "Software\\Microsoft\\Quake"
struct TexInfo {
DWORD m_block;
DWORD m_dwStage;
BOOL m_capture;
GLint m_internalformat;
D3DX_SURFACEFORMAT m_fmt;
GLsizei m_width;
GLsizei m_height;
GLsizei m_oldwidth;
GLsizei m_oldheight;
LPDIRECTDRAWSURFACE7 m_ddsurf;
D3DTEXTUREMINFILTER m_minmode;
D3DTEXTUREMAGFILTER m_magmode;
D3DTEXTUREMIPFILTER m_mipmode;
D3DTEXTUREADDRESS m_addu, m_addv;
};
struct Globals {
// Cache Line 1
GLenum m_prim;
unsigned m_comp;
unsigned m_nfv[4];
unsigned m_vcnt[4];
// Cache Line 2
void *m_verts;
// Following always needs to be together
/********************************/
D3DVALUE m_nx, m_ny, m_nz;
D3DCOLOR m_color;
D3DVALUE m_tu, m_tv, m_tu2, m_tv2;
/********************************/
BOOL m_texturing;
BOOL m_mtex;
// Cache Line 3
LPDIRECT3DVERTEXBUFFER7 m_vbuf, m_tvbuf, m_mtvbuf, m_fmtvbuf;
LPDIRECT3DDEVICE7 m_d3ddev;
DWORD m_shaders[2][9];
int m_winWidth;
int m_winHeight;
GLint m_scix, m_sciy;
GLsizei m_sciw, m_scih;
GLint m_vwx, m_vwy;
GLsizei m_vww, m_vwh;
GLint m_lckfirst;
GLsizei m_lckcount;
HWND m_hwnd;
HDC m_hdc;
ID3DXContext *m_pD3DX;
D3DX_SURFACEFORMAT m_ddFourBitAlphaSurfFormat;
D3DX_SURFACEFORMAT m_ddEightBitAlphaSurfFormat;
D3DX_SURFACEFORMAT m_ddFiveBitSurfFormat;
D3DX_SURFACEFORMAT m_ddEightBitSurfFormat;
D3DX_SURFACEFORMAT m_ddLuminanceSurfFormat;
D3DX_SURFACEFORMAT m_ddAlphaSurfFormat;
D3DDEVICEDESC7 m_dd;
GLenum m_cullMode;
D3DTRANSFORMSTATETYPE m_matrixMode;
BOOL m_cullEnabled;
BOOL m_texHandleValid;
BOOL m_subsample;
BOOL m_usemtex;
BOOL m_usemipmap;
BOOL m_doFlip;
BOOL m_makeSquare;
BOOL m_scissoring;
BOOL m_updvwp;
BOOL m_usecolorary, m_usetexcoordary[2], m_usevertexary;
GLuint m_curstagebinding[2];
GLenum m_curtgt, m_client_active_texture_arb;
int m_blendmode[2];
D3DCOLOR m_clearColor;
GLclampd m_clearDepth;
const GLfloat *m_vertexary;
const void *m_colorary;
GLsizei m_numIndices;
WORD *m_wIndices;
const GLfloat *m_texcoordary[2];
LPDIRECTDRAWSURFACE7 m_curtex[2];
GLList<D3DMATRIX> m_matrixStack[3];
WNDPROC m_wndproc;
DWORD m_lod;
TexInfo m_tex[MAXGLTEXHANDLES]; // support upto MAXGLTEXHANDLES for the time being;
GLList<GLuint> m_freeTextures;
GLenum m_frontFace;
BOOL m_usenormalary;
const GLfloat *m_normalary;
DWORD m_normalstride;
DWORD m_texcoordstride[2];
DWORD m_vertexstride;
BOOL m_texgen[2];
GLint m_texgenmode[2];
GLfloat m_texgenplane[2][2][4];
D3DMATRIX m_inverseworld;
BOOL m_inversedirty;
BOOL m_objectdirty[2];
D3DCOLOR m_envcolor;
DWORD m_colorstride;
GLenum m_colortype;
D3DLIGHT7 m_lights[8];
GLfloat *m_spherecoords;
DWORD m_zbias;
BOOL m_usedirectional;
D3DMATRIX m_curtexmatrix;
BOOL m_usefogary;
D3DCOLOR m_fogcolor;
const GLfloat *m_fogary;
DWORD m_fogstride;
};
#ifndef M_PI
#define M_PI 3.1415926536
#endif
#define CEILING( A, B ) ( (A) % (B) == 0 ? (A)/(B) : (A)/(B)+1 )
/* To work around optimizer bug in MSVC4.1 */
#if defined(__WIN32__) && !defined(OPENSTEP)
void
dummy(GLuint j, GLuint k)
{
}
#else
#define dummy(J, K)
#endif
/* EXT_bgra */
#define GL_BGR 0x80E0
#define GL_BGRA 0x80E1
/* Errors */
#define GLU_NO_ERROR 0
#define GLU_ERROR 100103
#define GLU_INVALID_ENUM 100900
#define GLU_INVALID_VALUE 100901
#define GLU_OUT_OF_MEMORY 100902
/* GLU 1.1 and later */
#define GLU_VERSION 100800
#define GLU_EXTENSIONS 100801
#endif