opengl_local.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. /*
  2. Copyright (C) 1997-2001 Id Software, Inc.
  3. This program is free software; you can redistribute it and/or
  4. modify it under the terms of the GNU General Public License
  5. as published by the Free Software Foundation; either version 2
  6. of the License, or (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program; if not, write to the Free Software
  13. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  14. */
  15. #ifndef __OPENGL_LOCAL_H__
  16. #define __OPENGL_LOCAL_H__
  17. extern int glMaxTexSize; // maximum texture size
  18. //===================================================================
  19. extern void GL_SetDefaultState( void );
  20. extern void GL_UpdateSwapInterval( void );
  21. extern float gldepthmin, gldepthmax;
  22. //====================================================
  23. extern int gl_filter_min, gl_filter_max;
  24. //
  25. // view origin
  26. //
  27. extern vec3_t vup;
  28. extern vec3_t vpn;
  29. extern vec3_t vright;
  30. extern vec3_t r_origin;
  31. //
  32. // screen size info
  33. //
  34. //extern refdef_t r_newrefdef;
  35. extern int r_viewcluster, r_viewcluster2, r_oldviewcluster, r_oldviewcluster2;
  36. extern cvar_t *r_norefresh;
  37. extern cvar_t *r_lefthand;
  38. extern cvar_t *r_speeds;
  39. extern cvar_t *r_novis;
  40. extern cvar_t *r_nocull;
  41. extern cvar_t *gl_vertex_arrays;
  42. extern cvar_t *gl_ext_swapinterval;
  43. extern cvar_t *gl_ext_palettedtexture;
  44. extern cvar_t *gl_ext_multitexture;
  45. extern cvar_t *gl_ext_pointparameters;
  46. extern cvar_t *gl_ext_compiled_vertex_array;
  47. extern cvar_t *gl_nosubimage;
  48. extern cvar_t *gl_bitdepth;
  49. extern cvar_t *gl_mode;
  50. extern cvar_t *gl_lightmap;
  51. extern cvar_t *gl_shadows;
  52. extern cvar_t *gl_dynamic;
  53. extern cvar_t *gl_nobind;
  54. extern cvar_t *gl_round_down;
  55. extern cvar_t *gl_picmip;
  56. extern cvar_t *gl_skymip;
  57. extern cvar_t *gl_showtris;
  58. extern cvar_t *gl_finish;
  59. extern cvar_t *gl_ztrick;
  60. extern cvar_t *gl_clear;
  61. extern cvar_t *gl_cull;
  62. extern cvar_t *gl_poly;
  63. extern cvar_t *gl_texsort;
  64. extern cvar_t *gl_polyblend;
  65. extern cvar_t *gl_flashblend;
  66. extern cvar_t *gl_lightmaptype;
  67. extern cvar_t *gl_modulate;
  68. extern cvar_t *gl_playermip;
  69. extern cvar_t *gl_drawbuffer;
  70. extern cvar_t *gl_driver;
  71. extern cvar_t *gl_swapinterval;
  72. extern cvar_t *gl_texturemode;
  73. extern cvar_t *gl_saturatelighting;
  74. extern cvar_t *r_fullscreen;
  75. extern cvar_t *vid_gamma;
  76. extern cvar_t *intensity;
  77. extern int gl_lightmap_format;
  78. extern int gl_solid_format;
  79. extern int gl_alpha_format;
  80. extern int gl_tex_alpha_format;
  81. extern void R_Bind( int texnum );
  82. extern void R_MBind( GLenum target, int texnum );
  83. extern void R_TexEnv( GLenum value );
  84. extern void R_EnableMultitexture( _boolean enable );
  85. extern void R_SelectTexture( GLenum );
  86. //====================================================================
  87. extern int registration_sequence;
  88. typedef struct
  89. {
  90. const char *renderer_string;
  91. const char *vendor_string;
  92. const char *version_string;
  93. const char *extensions_string;
  94. _boolean Version_1_2;
  95. } glconfig_t;
  96. typedef struct
  97. {
  98. float inverse_intensity;
  99. _boolean fullscreen;
  100. int prev_mode;
  101. int lightmap_textures;
  102. int currenttextures[2];
  103. int currenttmu;
  104. } glstate_t;
  105. extern glconfig_t gl_config;
  106. extern glstate_t gl_state;
  107. //////////////////////////////////////////////////////
  108. typedef struct
  109. {
  110. _boolean ARBMultiTexture;
  111. int nTextureStages; // Number of texture stages supported
  112. _boolean EXTTextureEnvCombine;
  113. _boolean EXTTextureFilterAnisotropic;
  114. float nMaxAnisotropy;
  115. // NB: Fence extension is not here, because NVVertexArrayRange is false if GL_NV_fence is not here.
  116. _boolean NVVertexArrayRange;
  117. int NVVertexArrayRangeMaxVertex;
  118. _boolean EXTTextureCompressionS3TC;
  119. _boolean EXTVertexWeighting;
  120. _boolean EXTSeparateSpecularColor;
  121. _boolean NVTextureEnvCombine4;
  122. _boolean ARBTextureCubeMap;
  123. _boolean NVVertexProgram;
  124. _boolean EXTVertexShader;
  125. _boolean NVTextureShader;
  126. // true if NVVertexProgram and if we know that VP is emulated
  127. _boolean NVVertexProgramEmulated;
  128. _boolean EXTSecondaryColor;
  129. _boolean EXTBlendColor;
  130. // NVVertexArrayRange2.
  131. _boolean NVVertexArrayRange2;
  132. // equal to GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV if possible, or GL_VERTEX_ARRAY_RANGE_NV
  133. int NVStateVARWithoutFlush;
  134. /* WGL ARB Extensions */
  135. _boolean WGLARBPBuffer;
  136. _boolean WGLARBPixelFormat;
  137. _boolean WGLEXTSwapControl;
  138. /* ATI Extensions */
  139. _boolean ATIVertexArrayObject;
  140. _boolean ATIMapObjectBuffer;
  141. _boolean ATITextureEnvCombine3;
  142. _boolean ATIEnvMapBumpMap;
  143. _boolean ATIFragmentShader;
  144. _boolean ATIXTextureEnvRoute;
  145. /* ARB Extensions */
  146. _boolean ARBTextureCompression;
  147. _boolean ARBFragmentProgram;
  148. _boolean ARBVertexBufferObject;
  149. _boolean ARBVertexProgram;
  150. /* Disable Hardware feature */
  151. _boolean DisableHardwareVertexProgram;
  152. _boolean DisableHardwareTextureShader;
  153. } GL_Extensions;
  154. extern GL_Extensions gl_ext;
  155. extern void GL_ConfigExtensions( const char *glext );
  156. extern void MYgluPerspective( GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar );
  157. extern void PrintGLError( W32 err, const char *from );
  158. /*
  159. ====================================================================
  160. IMPLEMENTATION SPECIFIC FUNCTIONS
  161. ====================================================================
  162. */
  163. #ifdef __cplusplus
  164. extern "C" {
  165. #endif
  166. void GLimp_BeginFrame();
  167. void GLimp_EndFrame( void );
  168. _boolean GLimp_Init( void *hinstance, void *hWnd );
  169. void GLimp_Shutdown( void );
  170. int GLimp_SetMode( int *pwidth, int *pheight, int mode, _boolean fullscreen );
  171. void GLimp_AppActivate( _boolean active );
  172. #ifdef __cplusplus
  173. }
  174. #endif
  175. #endif /* __OPENGL_LOCAL_H__ */