move extension tests to after opengl init

This commit is contained in:
Glenn Maynard
2002-11-12 20:39:08 +00:00
parent 47a8fcb1a2
commit 086bf5bf89
2 changed files with 32 additions and 19 deletions
+31 -19
View File
@@ -84,19 +84,6 @@ RageDisplay::RageDisplay( bool windowed, int width, int height, int bpp, int rat
SetVideoMode( windowed, width, height, bpp, rate, vsync );
double fGLVersion = atof( (const char *) glGetString(GL_VERSION) );
g_glVersion = int(roundf(fGLVersion * 10));
LOG->Trace( "OpenGL version %.1f", g_glVersion / 10.);
GetGLExtensions(g_glExts);
if(g_glExts.find("GL_EXT_texture_env_combine") != g_glExts.end())
g_GL_EXT_texture_env_combine = true;
glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) SDL_GL_GetProcAddress ("glBlendFuncSeparate");
/* Windows vsync: */
if(g_glExts.find("WGL_EXT_swap_control") != g_glExts.end())
wglSwapIntervalEXT = (PWSWAPINTERVALEXTPROC) SDL_GL_GetProcAddress("wglSwapIntervalEXT");
SetupOpenGL();
}
@@ -117,11 +104,31 @@ void RageDisplay::SetupOpenGL()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}
RageDisplay::~RageDisplay()
{
SDL_QuitSubSystem(SDL_INIT_VIDEO);
}
void RageDisplay::SetupExtensions()
{
double fGLVersion = atof( (const char *) glGetString(GL_VERSION) );
g_glVersion = int(roundf(fGLVersion * 10));
LOG->Trace( "OpenGL version %.1f", g_glVersion / 10.);
GetGLExtensions(g_glExts);
if(g_glExts.find("GL_EXT_texture_env_combine") != g_glExts.end())
g_GL_EXT_texture_env_combine = true;
glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) SDL_GL_GetProcAddress ("glBlendFuncSeparate");
/* Windows vsync: */
if(g_glExts.find("WGL_EXT_swap_control") != g_glExts.end()) {
wglSwapIntervalEXT = (PWSWAPINTERVALEXTPROC) SDL_GL_GetProcAddress("wglSwapIntervalEXT");
if(wglSwapIntervalEXT)
LOG->Trace("Got wglSwapIntervalEXT");
}
}
/* Set the video mode. In some cases, changing the video mode will reset
* the rendering context; returns true if we need to reload textures. */
bool RageDisplay::SetVideoMode( bool windowed, int width, int height, int bpp, int rate, bool vsync )
@@ -179,11 +186,6 @@ bool RageDisplay::SetVideoMode( bool windowed, int width, int height, int bpp, i
}
#endif
/* Set vsync the Windows way, if we can. (What other extensions are there
* to do this, for other archs?) */
if(wglSwapIntervalEXT)
wglSwapIntervalEXT(vsync);
if(!g_screen) {
g_screen = SDL_SetVideoMode(width, height, bpp, g_flags);
if(!g_screen)
@@ -198,6 +200,16 @@ bool RageDisplay::SetVideoMode( bool windowed, int width, int height, int bpp, i
}
#endif
/* Now that we've initialized, we can search for extensions (some of which
* we may need to set up the video mode). */
SetupExtensions();
/* Set vsync the Windows way, if we can. (What other extensions are there
* to do this, for other archs?) */
if(wglSwapIntervalEXT) {
wglSwapIntervalEXT(vsync);
}
if(need_reload) {
/* OpenGL state was lost; set up again. */
SetupOpenGL();
@@ -240,7 +252,7 @@ void RageDisplay::Flip()
g_iVertsRenderedSinceLastCheck = 0;
g_iDPF = g_iDrawsSinceLastCheck / g_iFPS;
g_iDrawsSinceLastCheck = 0;
//LOG->Trace( "FPS: %d, VPF: %d, DPF: %d", m_iFPS, m_iVPF, m_iDPF );
LOG->Trace( "FPS: %d, VPF: %d, DPF: %d", g_iFPS, g_iVPF, g_iDPF );
}
}
+1
View File
@@ -81,6 +81,7 @@ protected:
void AddVerts( const RageVertex v[], int iNumVerts );
void SetBlendMode(int src, int dst);
void SetupOpenGL();
void SetupExtensions();
};