mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 01:19:19 +02: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.getTokens(1);
|
||||||
Parser >> gfx_angleplatform;
|
Parser >> gfx_angleplatform;
|
||||||
}
|
}
|
||||||
|
else if (token == "gfx.gldebug")
|
||||||
|
{
|
||||||
|
Parser.getTokens(1);
|
||||||
|
Parser >> gfx_gldebug;
|
||||||
|
}
|
||||||
else if (token == "gfx.shadergamma")
|
else if (token == "gfx.shadergamma")
|
||||||
{
|
{
|
||||||
Parser.getTokens(1);
|
Parser.getTokens(1);
|
||||||
|
|||||||
@@ -253,6 +253,7 @@ struct global_settings {
|
|||||||
bool gfx_shadergamma = false;
|
bool gfx_shadergamma = false;
|
||||||
bool gfx_usegles = false;
|
bool gfx_usegles = false;
|
||||||
std::string gfx_angleplatform;
|
std::string gfx_angleplatform;
|
||||||
|
bool gfx_gldebug = false;
|
||||||
bool vr = false;
|
bool vr = false;
|
||||||
std::string vr_backend;
|
std::string vr_backend;
|
||||||
|
|
||||||
|
|||||||
@@ -772,8 +772,12 @@ eu07_application::init_glfw() {
|
|||||||
Global.bUseVBO = true;
|
Global.bUseVBO = true;
|
||||||
// activate core profile for opengl 3.3 renderer
|
// activate core profile for opengl 3.3 renderer
|
||||||
if( !Global.gfx_usegles ) {
|
if( !Global.gfx_usegles ) {
|
||||||
|
#ifndef EU07_USEIMGUIIMPLOPENGL2
|
||||||
glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );
|
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_MAJOR, 3 );
|
||||||
glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 3 );
|
glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 3 );
|
||||||
}
|
}
|
||||||
@@ -797,6 +801,9 @@ eu07_application::init_glfw() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Global.gfx_gldebug)
|
||||||
|
glfwWindowHint( GLFW_OPENGL_DEBUG_CONTEXT, GLFW_TRUE );
|
||||||
|
|
||||||
glfwWindowHint(GLFW_SRGB_CAPABLE, !Global.gfx_shadergamma);
|
glfwWindowHint(GLFW_SRGB_CAPABLE, !Global.gfx_shadergamma);
|
||||||
|
|
||||||
if( Global.fullscreen_windowed ) {
|
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)
|
bool opengl33_renderer::Init(GLFWwindow *Window)
|
||||||
{
|
{
|
||||||
#ifdef EU07_DEBUG_OPENGL
|
if (Global.gfx_gldebug && GLAD_GL_KHR_debug) {
|
||||||
if( GLAD_GL_KHR_debug ) {
|
|
||||||
glEnable( GL_DEBUG_OUTPUT );
|
glEnable( GL_DEBUG_OUTPUT );
|
||||||
glEnable( GL_DEBUG_OUTPUT_SYNCHRONOUS );
|
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_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 );
|
glDebugMessageControl( GL_DONT_CARE, GL_DEBUG_TYPE_PERFORMANCE, GL_DONT_CARE, 0, nullptr, GL_FALSE );
|
||||||
glDebugMessageCallback( ErrorCallback, 0 );
|
glDebugMessageCallback( ErrorCallback, 0 );
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (!Init_caps())
|
if (!Init_caps())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -4432,8 +4431,8 @@ void opengl33_renderer::Update(double const Deltatime)
|
|||||||
Pick_Node_Callback([](scene::basic_node *) {});
|
Pick_Node_Callback([](scene::basic_node *) {});
|
||||||
|
|
||||||
// dump last opengl error, if any
|
// dump last opengl error, if any
|
||||||
auto const glerror = ::glGetError();
|
int glerror;
|
||||||
if (glerror != GL_NO_ERROR)
|
while ((glerror = glGetError()) != GL_NO_ERROR)
|
||||||
{
|
{
|
||||||
std::string glerrorstring;
|
std::string glerrorstring;
|
||||||
if (glerror == GL_INVALID_ENUM)
|
if (glerror == GL_INVALID_ENUM)
|
||||||
|
|||||||
Reference in New Issue
Block a user