/** \brief The OglSdlSurface function \param w width \param h height \param isFullscreen if true, go fullscreen \return if true, changed video mode */ boolean OglSdlSurface(INT32 w, INT32 h) { INT32 cbpp; const GLvoid *glvendor = NULL, *glrenderer = NULL, *glversion = NULL; cbpp = cv_scr_depth.value < 16 ? 16 : cv_scr_depth.value; glvendor = pglGetString(GL_VENDOR); // Get info and extensions. //BP: why don't we make it earlier ? //Hurdler: we cannot do that before intialising gl context glrenderer = pglGetString(GL_RENDERER); glversion = pglGetString(GL_VERSION); gl_extensions = pglGetString(GL_EXTENSIONS); DBG_Printf("Vendor : %s\n", glvendor); DBG_Printf("Renderer : %s\n", glrenderer); DBG_Printf("Version : %s\n", glversion); DBG_Printf("Extensions : %s\n", gl_extensions); oglflags = 0; if (isExtAvailable("GL_EXT_texture_filter_anisotropic", gl_extensions)) pglGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maximumAnisotropy); else maximumAnisotropy = 1; SetupGLFunc13(); granisotropicmode_cons_t[1].value = maximumAnisotropy; SDL_GL_SetSwapInterval(cv_vidwait.value ? 1 : 0); SetModelView(w, h); SetStates(); pglClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); HWR_Startup(); textureformatGL = cbpp > 16 ? GL_RGBA : GL_RGB5_A1; return true; }
/** \brief The OglSdlSurface function \param w width \param h height \param isFullscreen if true, go fullscreen \return if true, changed video mode */ boolean OglSdlSurface(INT32 w, INT32 h, boolean isFullscreen) { INT32 cbpp; Uint32 OGLFlags; const GLvoid *glvendor = NULL, *glrenderer = NULL, *glversion = NULL; cbpp = cv_scr_depth.value < 16 ? 16 : cv_scr_depth.value; if (vidSurface) { //Alam: SDL_Video system free vidSurface for me #ifdef VOODOOSAFESWITCHING SDL_QuitSubSystem(SDL_INIT_VIDEO); SDL_InitSubSystem(SDL_INIT_VIDEO); #endif } if (isFullscreen) OGLFlags = FOGLFlags; else OGLFlags = WOGLFlags; cbpp = SDL_VideoModeOK(w, h, cbpp, OGLFlags); if (cbpp < 16) return true; //Alam: Let just say we did, ok? vidSurface = SDL_SetVideoMode(w, h, cbpp, OGLFlags); if (!vidSurface) return false; glvendor = pglGetString(GL_VENDOR); // Get info and extensions. //BP: why don't we make it earlier ? //Hurdler: we cannot do that before intialising gl context glrenderer = pglGetString(GL_RENDERER); glversion = pglGetString(GL_VERSION); gl_extensions = pglGetString(GL_EXTENSIONS); DBG_Printf("Vendor : %s\n", glvendor); DBG_Printf("Renderer : %s\n", glrenderer); DBG_Printf("Version : %s\n", glversion); DBG_Printf("Extensions : %s\n", gl_extensions); oglflags = 0; #ifdef _WIN32 // BP: disable advenced feature that don't work on somes hardware // Hurdler: Now works on G400 with bios 1.6 and certified drivers 6.04 if (strstr(glrenderer, "810")) oglflags |= GLF_NOZBUFREAD; #elif defined (unix) || defined (UNIXCOMMON) // disable advanced features not working on somes hardware if (strstr(glrenderer, "G200")) oglflags |= GLF_NOTEXENV; if (strstr(glrenderer, "G400")) oglflags |= GLF_NOTEXENV; #endif DBG_Printf("oglflags : 0x%X\n", oglflags ); #ifdef USE_PALETTED_TEXTURE if (isExtAvailable("GL_EXT_paletted_texture", gl_extensions)) glColorTableEXT = SDL_GL_GetProcAddress("glColorTableEXT"); else glColorTableEXT = NULL; #endif #ifdef USE_WGL_SWAP if (isExtAvailable("WGL_EXT_swap_control", gl_extensions)) wglSwapIntervalEXT = SDL_GL_GetProcAddress("wglSwapIntervalEXT"); else wglSwapIntervalEXT = NULL; #else if (isExtAvailable("GLX_SGI_swap_control", gl_extensions)) glXSwapIntervalSGIEXT = SDL_GL_GetProcAddress("glXSwapIntervalSGI"); else glXSwapIntervalSGIEXT = NULL; #endif #ifndef KOS_GL_COMPATIBILITY if (isExtAvailable("GL_EXT_texture_filter_anisotropic", gl_extensions)) pglGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maximumAnisotropy); else #endif maximumAnisotropy = 0; granisotropicmode_cons_t[1].value = maximumAnisotropy; SetModelView(w, h); SetStates(); pglClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); HWR_Startup(); #ifdef KOS_GL_COMPATIBILITY textureformatGL = GL_ARGB4444; #else textureformatGL = cbpp > 16 ? GL_RGBA : GL_RGB5_A1; #endif return true; }