mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-09 15:41:15 +00:00
Change: [Win32] Disable VSync for OpenGL by default.
This commit is contained in:
parent
9a069faa01
commit
b181859629
@ -1328,6 +1328,7 @@ void VideoDriver_Win32GDI::PaintThread()
|
||||
#endif
|
||||
|
||||
static PFNWGLCREATECONTEXTATTRIBSARBPROC _wglCreateContextAttribsARB = nullptr;
|
||||
static PFNWGLSWAPINTERVALEXTPROC _wglSwapIntervalEXT = nullptr;
|
||||
static bool _hasWGLARBCreateContextProfile = false; ///< Is WGL_ARB_create_context_profile supported?
|
||||
|
||||
/** Platform-specific callback to get an OpenGL funtion pointer. */
|
||||
@ -1398,6 +1399,9 @@ static void LoadWGLExtensions()
|
||||
_wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)wglGetProcAddress("wglCreateContextAttribsARB");
|
||||
}
|
||||
_hasWGLARBCreateContextProfile = FindStringInExtensionList(wgl_exts, "WGL_ARB_create_context_profile") != nullptr;
|
||||
if (FindStringInExtensionList(wgl_exts, "WGL_EXT_swap_control") != nullptr) {
|
||||
_wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)wglGetProcAddress("wglSwapIntervalEXT");
|
||||
}
|
||||
}
|
||||
|
||||
wglMakeCurrent(nullptr, nullptr);
|
||||
@ -1416,6 +1420,7 @@ const char *VideoDriver_Win32OpenGL::Start(const StringList ¶m)
|
||||
if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return "Only 32bpp blitters supported";
|
||||
|
||||
Dimension old_res = _cur_resolution; // Save current screen resolution in case of errors, as MakeWindow invalidates it.
|
||||
this->vsync = GetDriverParamBool(param, "vsync");
|
||||
|
||||
LoadWGLExtensions();
|
||||
|
||||
@ -1487,6 +1492,13 @@ const char *VideoDriver_Win32OpenGL::AllocateContext()
|
||||
}
|
||||
if (!wglMakeCurrent(this->dc, rc)) return "Can't active GL context";
|
||||
|
||||
/* Enable/disable Vsync if supported. */
|
||||
if (_wglSwapIntervalEXT != nullptr) {
|
||||
_wglSwapIntervalEXT(this->vsync ? 1 : 0);
|
||||
} else if (vsync) {
|
||||
DEBUG(driver, 0, "OpenGL: Vsync requested, but not supported by driver");
|
||||
}
|
||||
|
||||
this->gl_rc = rc;
|
||||
return OpenGLBackend::Create(&GetOGLProcAddressCallback);
|
||||
}
|
||||
|
@ -143,6 +143,7 @@ public:
|
||||
protected:
|
||||
HDC dc; ///< Window device context.
|
||||
HGLRC gl_rc; ///< OpenGL context.
|
||||
bool vsync; ///< Enable VSync?
|
||||
|
||||
uint8 GetFullscreenBpp() override { return 32; } // OpenGL is always 32 bpp.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user