Create OpenGL context using CreateContextAttribsARB

This commit is contained in:
sfan5 2022-02-20 23:18:17 +01:00
parent 09b8837ef9
commit d59bcdbd07
1 changed files with 28 additions and 5 deletions

View File

@ -319,6 +319,28 @@ bool CGLXManager::generateContext()
{
if (GlxWin)
{
#if defined(GLX_ARB_create_context)
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
PFNGLXCREATECONTEXTATTRIBSARBPROC glxCreateContextAttribsARB=(PFNGLXCREATECONTEXTATTRIBSARBPROC)glXGetProcAddress(reinterpret_cast<const GLubyte*>("glXCreateContextAttribsARB"));
#else
PFNGLXCREATECONTEXTATTRIBSARBPROC glxCreateContextAttribsARB=glXCreateContextAttribsARB;
#endif
if (glxCreateContextAttribsARB)
{
int contextAttrBuffer[] = {
GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
GLX_CONTEXT_MINOR_VERSION_ARB, 0,
// GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB,
None
};
context = glxCreateContextAttribsARB((Display*)CurrentContext.OpenGLLinux.X11Display, (GLXFBConfig)glxFBConfig, NULL, True, contextAttrBuffer);
// transparently fall back to legacy call
}
if (!context)
#endif
{
// create glx context
context = glXCreateNewContext((Display*)CurrentContext.OpenGLLinux.X11Display, (GLXFBConfig)glxFBConfig, GLX_RGBA_TYPE, NULL, True);
if (!context)
@ -327,6 +349,7 @@ bool CGLXManager::generateContext()
return false;
}
}
}
else
{
os::Printer::log("GLX window was not properly created.", ELL_WARNING);