improve context creation, add gfx.gldebug

This commit is contained in:
milek7
2021-01-22 00:24:09 +01:00
parent d901177489
commit 8ec29babf9
4 changed files with 18 additions and 6 deletions

View File

@@ -883,6 +883,11 @@ global_settings::ConfigParse(cParser &Parser) {
Parser.getTokens(1);
Parser >> gfx_angleplatform;
}
else if (token == "gfx.gldebug")
{
Parser.getTokens(1);
Parser >> gfx_gldebug;
}
else if (token == "gfx.shadergamma")
{
Parser.getTokens(1);

View File

@@ -253,6 +253,7 @@ struct global_settings {
bool gfx_shadergamma = false;
bool gfx_usegles = false;
std::string gfx_angleplatform;
bool gfx_gldebug = false;
bool vr = false;
std::string vr_backend;

View File

@@ -772,8 +772,12 @@ eu07_application::init_glfw() {
Global.bUseVBO = true;
// activate core profile for opengl 3.3 renderer
if( !Global.gfx_usegles ) {
#ifndef EU07_USEIMGUIIMPLOPENGL2
glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );
glfwWindowHint( GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE );
glfwWindowHint( GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE );
#else
glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE );
#endif
glfwWindowHint( GLFW_CONTEXT_VERSION_MAJOR, 3 );
glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 3 );
}
@@ -797,6 +801,9 @@ eu07_application::init_glfw() {
#endif
}
if (Global.gfx_gldebug)
glfwWindowHint( GLFW_OPENGL_DEBUG_CONTEXT, GLFW_TRUE );
glfwWindowHint(GLFW_SRGB_CAPABLE, !Global.gfx_shadergamma);
if( Global.fullscreen_windowed ) {

View File

@@ -55,15 +55,14 @@ ErrorCallback( GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei l
bool opengl33_renderer::Init(GLFWwindow *Window)
{
#ifdef EU07_DEBUG_OPENGL
if( GLAD_GL_KHR_debug ) {
if (Global.gfx_gldebug && GLAD_GL_KHR_debug) {
glEnable( GL_DEBUG_OUTPUT );
glEnable( GL_DEBUG_OUTPUT_SYNCHRONOUS );
glDebugMessageControl( GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_NOTIFICATION, 0, nullptr, GL_FALSE );
glDebugMessageControl( GL_DONT_CARE, GL_DEBUG_TYPE_PERFORMANCE, GL_DONT_CARE, 0, nullptr, GL_FALSE );
glDebugMessageCallback( ErrorCallback, 0 );
}
#endif
if (!Init_caps())
return false;
@@ -4432,8 +4431,8 @@ void opengl33_renderer::Update(double const Deltatime)
Pick_Node_Callback([](scene::basic_node *) {});
// dump last opengl error, if any
auto const glerror = ::glGetError();
if (glerror != GL_NO_ERROR)
int glerror;
while ((glerror = glGetError()) != GL_NO_ERROR)
{
std::string glerrorstring;
if (glerror == GL_INVALID_ENUM)