mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
improve context creation, add gfx.gldebug
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 ) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user