wolf3d-ios/wolf3d/code/env/opengl_local.h

255 lines
5.7 KiB
C

/*
Copyright (C) 1997-2001 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __OPENGL_LOCAL_H__
#define __OPENGL_LOCAL_H__
extern int glMaxTexSize; // maximum texture size
//===================================================================
extern void GL_SetDefaultState( void );
extern float gldepthmin, gldepthmax;
//====================================================
extern int gl_filter_min, gl_filter_max;
//
// view origin
//
extern vec3_t vup;
extern vec3_t vpn;
extern vec3_t vright;
extern vec3_t r_origin;
//
// screen size info
//
//extern refdef_t r_newrefdef;
extern int r_viewcluster, r_viewcluster2, r_oldviewcluster, r_oldviewcluster2;
extern cvar_t *r_norefresh;
extern cvar_t *r_lefthand;
extern cvar_t *r_speeds;
extern cvar_t *r_novis;
extern cvar_t *r_nocull;
extern cvar_t *gl_vertex_arrays;
extern cvar_t *gl_ext_swapinterval;
extern cvar_t *gl_ext_palettedtexture;
extern cvar_t *gl_ext_multitexture;
extern cvar_t *gl_ext_pointparameters;
extern cvar_t *gl_ext_compiled_vertex_array;
extern cvar_t *gl_nosubimage;
extern cvar_t *gl_bitdepth;
extern cvar_t *gl_mode;
extern cvar_t *gl_lightmap;
extern cvar_t *gl_shadows;
extern cvar_t *gl_dynamic;
extern cvar_t *gl_nobind;
extern cvar_t *gl_round_down;
extern cvar_t *gl_picmip;
extern cvar_t *gl_skymip;
extern cvar_t *gl_showtris;
extern cvar_t *gl_finish;
extern cvar_t *gl_ztrick;
extern cvar_t *gl_clear;
extern cvar_t *gl_cull;
extern cvar_t *gl_poly;
extern cvar_t *gl_texsort;
extern cvar_t *gl_polyblend;
extern cvar_t *gl_flashblend;
extern cvar_t *gl_lightmaptype;
extern cvar_t *gl_modulate;
extern cvar_t *gl_playermip;
extern cvar_t *gl_drawbuffer;
extern cvar_t *gl_driver;
extern cvar_t *gl_swapinterval;
extern cvar_t *gl_texturemode;
extern cvar_t *gl_saturatelighting;
extern cvar_t *r_fullscreen;
extern cvar_t *vid_gamma;
extern cvar_t *intensity;
extern int gl_lightmap_format;
extern int gl_solid_format;
extern int gl_alpha_format;
extern int gl_tex_alpha_format;
extern void R_Bind( int texnum );
extern void R_MBind( GLenum target, int texnum );
extern void R_TexEnv( GLenum value );
extern void R_EnableMultitexture( _boolean enable );
extern void R_SelectTexture( GLenum );
//====================================================================
extern int registration_sequence;
typedef struct
{
const char *renderer_string;
const char *vendor_string;
const char *version_string;
const char *extensions_string;
_boolean Version_1_2;
bool framebuffer_discard;
} glconfig_t;
typedef struct
{
float inverse_intensity;
_boolean fullscreen;
int prev_mode;
int lightmap_textures;
int currenttextures[2];
int currenttmu;
} glstate_t;
extern glconfig_t gl_config;
extern glstate_t gl_state;
//////////////////////////////////////////////////////
typedef struct
{
_boolean ARBMultiTexture;
int nTextureStages; // Number of texture stages supported
_boolean EXTTextureEnvCombine;
_boolean EXTTextureFilterAnisotropic;
float nMaxAnisotropy;
// NB: Fence extension is not here, because NVVertexArrayRange is false if GL_NV_fence is not here.
_boolean NVVertexArrayRange;
int NVVertexArrayRangeMaxVertex;
_boolean EXTTextureCompressionS3TC;
_boolean EXTVertexWeighting;
_boolean EXTSeparateSpecularColor;
_boolean NVTextureEnvCombine4;
_boolean ARBTextureCubeMap;
_boolean NVVertexProgram;
_boolean EXTVertexShader;
_boolean NVTextureShader;
// true if NVVertexProgram and if we know that VP is emulated
_boolean NVVertexProgramEmulated;
_boolean EXTSecondaryColor;
_boolean EXTBlendColor;
// NVVertexArrayRange2.
_boolean NVVertexArrayRange2;
// equal to GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV if possible, or GL_VERTEX_ARRAY_RANGE_NV
int NVStateVARWithoutFlush;
/* WGL ARB Extensions */
_boolean WGLARBPBuffer;
_boolean WGLARBPixelFormat;
_boolean WGLEXTSwapControl;
/* ATI Extensions */
_boolean ATIVertexArrayObject;
_boolean ATIMapObjectBuffer;
_boolean ATITextureEnvCombine3;
_boolean ATIEnvMapBumpMap;
_boolean ATIFragmentShader;
_boolean ATIXTextureEnvRoute;
/* ARB Extensions */
_boolean ARBTextureCompression;
_boolean ARBFragmentProgram;
_boolean ARBVertexBufferObject;
_boolean ARBVertexProgram;
/* Disable Hardware feature */
_boolean DisableHardwareVertexProgram;
_boolean DisableHardwareTextureShader;
} GL_Extensions;
extern GL_Extensions gl_ext;
extern void GL_ConfigExtensions( const char *glext );
extern void MYgluPerspective( GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar );
extern void PrintGLError( W32 err, const char *from );
/*
====================================================================
IMPLEMENTATION SPECIFIC FUNCTIONS
====================================================================
*/
#ifdef __cplusplus
extern "C" {
#endif
void GLimp_BeginFrame();
_boolean GLimp_Init( void *hinstance, void *hWnd );
void GLimp_Shutdown( void );
int GLimp_SetMode( int *pwidth, int *pheight, int mode, _boolean fullscreen );
void GLimp_AppActivate( _boolean active );
#ifdef __cplusplus
}
#endif
#endif /* __OPENGL_LOCAL_H__ */