// Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // // Copyright (C) 1998-2000 by DooM Legacy Team. // // 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. // //----------------------------------------------------------------------------- /// \file /// \brief OpenGL API for Doom Legacy #ifndef _R_OPENGL_H_ #define _R_OPENGL_H_ #ifdef SDL #ifdef _MSC_VER #pragma warning(disable : 4214 4244) #endif #include "SDL_opengl.h" //Alam_GBC: Simple, yes? #ifdef _MSC_VER #pragma warning(default : 4214 4244) #endif #else #include #include #endif #define _CREATE_DLL_ // necessary for Unix AND Windows #include "../../doomdef.h" #include "../hw_drv.h" // ========================================================================== // DEFINITIONS // ========================================================================== #define MIN(x,y) (((x)<(y)) ? (x) : (y)) #define MAX(x,y) (((x)>(y)) ? (x) : (y)) #undef DEBUG_TO_FILE // maybe defined in previous *.h #define DEBUG_TO_FILE // output debugging msgs to ogllog.txt #if defined ( SDL ) && !defined ( LOGMESSAGES ) #undef DEBUG_TO_FILE #endif #ifndef DRIVER_STRING // #define USE_PALETTED_TEXTURE #define DRIVER_STRING "HWRAPI Init(): SRB2 OpenGL renderer" // Tails #endif // ========================================================================== // PROTOS // ========================================================================== boolean LoadGL(void); void *GetGLFunc(const char *proc); boolean SetupGLfunc(void); void Flush(void); INT32 isExtAvailable(const char *extension, const GLubyte *start); boolean SetupPixelFormat(INT32 WantColorBits, INT32 WantStencilBits, INT32 WantDepthBits); void SetModelView(GLint w, GLint h); void SetStates(void); FUNCMATH float byteasfloat(UINT8 fbyte); #ifdef USE_PALETTED_TEXTURE extern PFNGLCOLORTABLEEXTPROC glColorTableEXT; extern GLubyte palette_tex[256*3]; #endif #ifndef GL_EXT_texture_filter_anisotropic #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF #endif #ifdef USE_WGL_SWAP typedef BOOL (APIENTRY *PFNWGLEXTSWAPCONTROLPROC) (int); typedef int (APIENTRY *PFNWGLEXTGETSWAPINTERVALPROC) (void); extern PFNWGLEXTSWAPCONTROLPROC wglSwapIntervalEXT; extern PFNWGLEXTGETSWAPINTERVALPROC wglGetSwapIntervalEXT; #endif #ifdef STATIC_OPENGL #define pglClear glClear #define pglGetIntegerv glGetIntegerv #define pglGetString glGetString #else /* 1.0 Miscellaneous functions */ typedef void (APIENTRY * PFNglClear) (GLbitfield mask); extern PFNglClear pglClear; typedef void (APIENTRY * PFNglGetIntegerv) (GLenum pname, GLint *params); extern PFNglGetIntegerv pglGetIntegerv; typedef const GLubyte* (APIENTRY * PFNglGetString) (GLenum name); extern PFNglGetString pglGetString; #endif // ========================================================================== // GLOBAL // ========================================================================== extern const GLubyte *gl_extensions; extern RGBA_t myPaletteData[]; #ifndef SDL extern FILE *logstream; #endif extern GLint screen_width; extern GLint screen_height; extern GLbyte screen_depth; extern GLint maximumAnisotropy; /** \brief OpenGL flags for video driver */ extern INT32 oglflags; extern GLint textureformatGL; typedef enum { GLF_NOZBUFREAD = 0x01, GLF_NOTEXENV = 0x02, } oglflags_t; #endif