X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=vid.h;h=10bf2bf1f5e54a1437717b51f7a33d9699d08b01;hp=174e7813d567a9030e9ccb9aa4448e9d09eaf814;hb=77d1b76d3f88c01c47d29bb507d8d9e2c398136f;hpb=e411cc7d14dad08cbbe27f5b3af86700f7eb5184 diff --git a/vid.h b/vid.h index 174e7813..10bf2bf1 100644 --- a/vid.h +++ b/vid.h @@ -8,7 +8,7 @@ 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. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. @@ -19,52 +19,130 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // vid.h -- video driver defs -#define VID_CBITS 6 -#define VID_GRADES (1 << VID_CBITS) +#ifndef VID_H +#define VID_H -// a pixel can be one, two, or four bytes -typedef byte pixel_t; +extern int cl_available; -typedef struct vrect_s +typedef struct viddef_s { - int x,y,width,height; - struct vrect_s *pnext; -} vrect_t; - -typedef struct -{ - unsigned width; - unsigned height; - float aspect; // width / height -- < 0 is taller than wide - int recalc_refdef; // if true, recalc vid-based stuff - unsigned conwidth; - unsigned conheight; + // these are set by VID_Mode + int width; + int height; + int bitsperpixel; + int fullscreen; + int refreshrate; + int stereobuffer; } viddef_t; -extern viddef_t vid; // global video state +// global video state +extern viddef_t vid; extern void (*vid_menudrawfn)(void); extern void (*vid_menukeyfn)(int key); -extern cvar_t vid_mode; -extern cvar_t vid_mouse; -extern cvar_t vid_fullscreen; +extern qboolean vid_hidden; +extern qboolean vid_activewindow; +extern cvar_t vid_hardwaregammasupported; +extern qboolean vid_usinghwgamma; +extern qboolean vid_supportrefreshrate; -void VID_InitCvars(void); +extern cvar_t vid_fullscreen; +extern cvar_t vid_width; +extern cvar_t vid_height; +extern cvar_t vid_bitsperpixel; +extern cvar_t vid_refreshrate; +extern cvar_t vid_vsync; +extern cvar_t vid_mouse; +extern cvar_t vid_grabkeyboard; +extern cvar_t vid_minwidth; +extern cvar_t vid_minheight; + +extern cvar_t gl_combine; +extern cvar_t gl_finish; + +extern cvar_t v_gamma; +extern cvar_t v_contrast; +extern cvar_t v_brightness; +extern cvar_t v_color_enable; +extern cvar_t v_color_black_r; +extern cvar_t v_color_black_g; +extern cvar_t v_color_black_b; +extern cvar_t v_color_grey_r; +extern cvar_t v_color_grey_g; +extern cvar_t v_color_grey_b; +extern cvar_t v_color_white_r; +extern cvar_t v_color_white_g; +extern cvar_t v_color_white_b; +extern cvar_t v_hwgamma; + +extern int gl_stencil; + +// brand of graphics chip +extern const char *gl_vendor; +// graphics chip model and other information +extern const char *gl_renderer; +// begins with 1.0.0, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.3.1, or 1.4.0 +extern const char *gl_version; +// extensions list, space separated +extern const char *gl_extensions; +// WGL, GLX, or AGL +extern const char *gl_platform; +// another extensions list, containing platform-specific extensions that are +// not in the main list +extern const char *gl_platformextensions; +// name of driver library (opengl32.dll, libGL.so.1, or whatever) +extern char gl_driver[256]; + +// compatibility hacks +extern qboolean isG200; +extern qboolean isRagePro; + +// LordHavoc: GLX_SGI_swap_control and WGL_EXT_swap_control +extern int gl_videosyncavailable; + +void *GL_GetProcAddress(const char *name); +int GL_CheckExtension(const char *name, const dllfunction_t *funcs, const char *disableparm, int silent); + +void VID_Shared_Init(void); void GL_Init (void); -void VID_CheckMultitexture(void); -void VID_CheckCVA(void); +void VID_CheckExtensions(void); -void VID_Init (void); +void VID_Init (void); // Called at startup -void VID_Shutdown (void); +void VID_Shutdown (void); // Called at shutdown int VID_SetMode (int modenum); // sets the mode; only used by the Quake engine for resetting to mode 0 (the // base mode) on memory allocation failures -// sets hardware gamma correction, returns false if the device does not support gamma control -int VID_SetGamma (float prescale, float gamma, float scale, float base); +int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate, int stereobuffer); +// allocates and opens an appropriate OpenGL context (and its window) + + +// sets hardware gamma correction, returns false if the device does not +// support gamma control +// (ONLY called by VID_UpdateGamma and VID_RestoreSystemGamma) +int VID_SetGamma(unsigned short *ramps, int rampsize); +// gets hardware gamma correction, returns false if the device does not +// support gamma control +// (ONLY called by VID_UpdateGamma and VID_RestoreSystemGamma) +int VID_GetGamma(unsigned short *ramps, int rampsize); +// makes sure ramp arrays are big enough and calls VID_GetGamma/VID_SetGamma +// (ONLY to be called from VID_Finish!) +void VID_UpdateGamma(qboolean force, int rampsize); +// turns off hardware gamma ramps immediately +// (called from various shutdown/deactivation functions) +void VID_RestoreSystemGamma(void); + +void VID_Finish (qboolean allowmousegrab); + +void VID_Restart_f(void); + +void VID_Start(void); + +#endif +