Removing use of glewExperimental.
The trick is setting WGL_CONTEXT_PROFILE_MASK_ARB. Fixes #359.
This commit is contained in:
parent
0ad5ec922f
commit
b0c223f2d8
|
@ -111,7 +111,6 @@ bool GLContext::Initialize(Window* target_window) {
|
||||||
|
|
||||||
tls_glew_context_ = glew_context_.get();
|
tls_glew_context_ = glew_context_.get();
|
||||||
tls_wglew_context_ = wglew_context_.get();
|
tls_wglew_context_ = wglew_context_.get();
|
||||||
glewExperimental = GL_TRUE;
|
|
||||||
if (glewInit() != GLEW_OK) {
|
if (glewInit() != GLEW_OK) {
|
||||||
XELOGE("Unable to initialize GLEW");
|
XELOGE("Unable to initialize GLEW");
|
||||||
return false;
|
return false;
|
||||||
|
@ -132,11 +131,13 @@ bool GLContext::Initialize(Window* target_window) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int attrib_list[] = {WGL_CONTEXT_MAJOR_VERSION_ARB,
|
int attrib_list[] = {WGL_CONTEXT_MAJOR_VERSION_ARB,
|
||||||
4, //
|
4,
|
||||||
WGL_CONTEXT_MINOR_VERSION_ARB,
|
WGL_CONTEXT_MINOR_VERSION_ARB,
|
||||||
5, //
|
5,
|
||||||
WGL_CONTEXT_FLAGS_ARB,
|
WGL_CONTEXT_FLAGS_ARB,
|
||||||
context_flags, //
|
context_flags,
|
||||||
|
WGL_CONTEXT_PROFILE_MASK_ARB,
|
||||||
|
WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
|
||||||
0};
|
0};
|
||||||
|
|
||||||
glrc_ = wglCreateContextAttribsARB(dc_, nullptr, attrib_list);
|
glrc_ = wglCreateContextAttribsARB(dc_, nullptr, attrib_list);
|
||||||
|
@ -184,20 +185,18 @@ std::unique_ptr<GraphicsContext> GLContext::CreateShared() {
|
||||||
GraphicsContextLock context_lock(this);
|
GraphicsContextLock context_lock(this);
|
||||||
|
|
||||||
int context_flags = 0;
|
int context_flags = 0;
|
||||||
// int profile = WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB;
|
|
||||||
int profile = WGL_CONTEXT_CORE_PROFILE_BIT_ARB;
|
|
||||||
if (FLAGS_gl_debug) {
|
if (FLAGS_gl_debug) {
|
||||||
context_flags |= WGL_CONTEXT_DEBUG_BIT_ARB;
|
context_flags |= WGL_CONTEXT_DEBUG_BIT_ARB;
|
||||||
}
|
}
|
||||||
|
|
||||||
int attrib_list[] = {WGL_CONTEXT_MAJOR_VERSION_ARB,
|
int attrib_list[] = {WGL_CONTEXT_MAJOR_VERSION_ARB,
|
||||||
4, //
|
4,
|
||||||
WGL_CONTEXT_MINOR_VERSION_ARB,
|
WGL_CONTEXT_MINOR_VERSION_ARB,
|
||||||
5, //
|
5,
|
||||||
WGL_CONTEXT_FLAGS_ARB,
|
WGL_CONTEXT_FLAGS_ARB,
|
||||||
context_flags, //
|
context_flags,
|
||||||
WGL_CONTEXT_PROFILE_MASK_ARB,
|
WGL_CONTEXT_PROFILE_MASK_ARB,
|
||||||
profile, //
|
WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
|
||||||
0};
|
0};
|
||||||
new_glrc = wglCreateContextAttribsARB(dc_, glrc_, attrib_list);
|
new_glrc = wglCreateContextAttribsARB(dc_, glrc_, attrib_list);
|
||||||
if (!new_glrc) {
|
if (!new_glrc) {
|
||||||
|
@ -212,8 +211,12 @@ std::unique_ptr<GraphicsContext> GLContext::CreateShared() {
|
||||||
XELOGE("Could not make new GL context current");
|
XELOGE("Could not make new GL context current");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
if (!glGetString(GL_EXTENSIONS)) {
|
||||||
|
new_context->ClearCurrent();
|
||||||
|
XELOGE("New GL context did not have extensions");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
glewExperimental = GL_TRUE;
|
|
||||||
if (glewInit() != GLEW_OK) {
|
if (glewInit() != GLEW_OK) {
|
||||||
new_context->ClearCurrent();
|
new_context->ClearCurrent();
|
||||||
XELOGE("Unable to initialize GLEW");
|
XELOGE("Unable to initialize GLEW");
|
||||||
|
@ -265,12 +268,11 @@ void GLContext::AssertExtensionsPresent() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(benvanik): figure out why this query fails.
|
if (!GLEW_ARB_fragment_coord_conventions) {
|
||||||
// if (!GLEW_ARB_fragment_coord_conventions) {
|
FatalGLError(
|
||||||
// FatalGLError(
|
"OpenGL extension ARB_fragment_coord_conventions is required.");
|
||||||
// "OpenGL extension ARB_fragment_coord_conventions is required.");
|
return;
|
||||||
// return;
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLContext::DebugMessage(GLenum source, GLenum type, GLuint id,
|
void GLContext::DebugMessage(GLenum source, GLenum type, GLuint id,
|
||||||
|
|
Loading…
Reference in New Issue