Stringifier + glDebugCallback
This commit is contained in:
		
							parent
							
								
									752258366d
								
							
						
					
					
						commit
						4678a7dbf6
					
				
					 7 changed files with 147 additions and 5 deletions
				
			
		| 
						 | 
					@ -39,13 +39,13 @@ namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		float vertices[] =
 | 
							float vertices[] =
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			-0.5f, -0.5f,
 | 
								-0.5f, -0.5f, 1.0f, 0.0f, 0.0f, 1.0f,
 | 
				
			||||||
			 0.5f, -0.5f,
 | 
								 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 1.0f,
 | 
				
			||||||
			 0.0f,  0.5f,
 | 
								 0.0f,  0.5f, 0.0f, 0.0f, 1.0f, 1.0f,
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		m_VertexBuffer = std::unique_ptr<VertexBuffer>(VertexBuffer::Create(2 * 3, vertices));
 | 
							m_VertexBuffer = std::unique_ptr<VertexBuffer>(VertexBuffer::Create((2 + 4) * 3, vertices));
 | 
				
			||||||
		m_VertexLayout = std::unique_ptr<VertexLayout>(VertexLayout::Create(m_VertexBuffer.get(), { VertexElementType::Float2 }));
 | 
							m_VertexLayout = std::unique_ptr<VertexLayout>(VertexLayout::Create(m_VertexBuffer.get(), { VertexElementType::Float2, VertexElementType::Float4 }));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Renderer* Renderer::Create(std::shared_ptr<RenderCommand> renderCommand)
 | 
						Renderer* Renderer::Create(std::shared_ptr<RenderCommand> renderCommand)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										51
									
								
								Engine/src/Engine/Utility/Stringifier.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								Engine/src/Engine/Utility/Stringifier.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					#include "ltpch.h"
 | 
				
			||||||
 | 
					#include "Stringifier.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <glad/glad.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						std::string Stringifier::glDebugMsgSeverity(unsigned int severity)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch (severity)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case GL_DEBUG_SEVERITY_NOTIFICATION: return "GL_DEBUG_SEVERITY_NOTIFICATION";
 | 
				
			||||||
 | 
							case GL_DEBUG_SEVERITY_LOW: return "GL_DEBUG_SEVERITY_LOW";
 | 
				
			||||||
 | 
							case GL_DEBUG_SEVERITY_MEDIUM: return "GL_DEBUG_SEVERITY_MEDIUM";
 | 
				
			||||||
 | 
							case GL_DEBUG_SEVERITY_HIGH: return "GL_DEBUG_SEVERITY_HIGH";
 | 
				
			||||||
 | 
							default: return "UNKNOWN";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						std::string Stringifier::glDebugMsgSource(unsigned int source)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch (source)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case GL_DEBUG_SOURCE_API: return "GL_DEBUG_SOURCE_API";
 | 
				
			||||||
 | 
							case GL_DEBUG_SOURCE_WINDOW_SYSTEM: return "GL_DEBUG_SOURCE_WINDOW_SYSTEM";
 | 
				
			||||||
 | 
							case GL_DEBUG_SOURCE_SHADER_COMPILER: return "GL_DEBUG_SOURCE_SHADER_COMPILER";
 | 
				
			||||||
 | 
							case GL_DEBUG_SOURCE_THIRD_PARTY: return "GL_DEBUG_SOURCE_THIRD_PARTY";
 | 
				
			||||||
 | 
							case GL_DEBUG_SOURCE_APPLICATION: return "GL_DEBUG_SOURCE_APPLICATION";
 | 
				
			||||||
 | 
							case GL_DEBUG_SOURCE_OTHER: return "GL_DEBUG_SOURCE_OTHER";
 | 
				
			||||||
 | 
							default: return "UNKNOWN";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						std::string Stringifier::glDebugMsgType(unsigned int type)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							switch (type)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_ERROR: return "GL_DEBUG_TYPE_ERROR";
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: return "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR";
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: return "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR";
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_PORTABILITY: return "GL_DEBUG_TYPE_PORTABILITY";
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_PERFORMANCE: return "GL_DEBUG_TYPE_PERFORMANCE";
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_MARKER: return "GL_DEBUG_TYPE_MARKER";
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_PUSH_GROUP: return "GL_DEBUG_TYPE_PUSH_GROUP";
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_POP_GROUP: return "GL_DEBUG_TYPE_POP_GROUP";
 | 
				
			||||||
 | 
							case GL_DEBUG_TYPE_OTHER: return "GL_DEBUG_TYPE_OTHER";
 | 
				
			||||||
 | 
							default: return "UNKNOWN";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								Engine/src/Engine/Utility/Stringifier.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Engine/src/Engine/Utility/Stringifier.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Base.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						class Stringifier
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						public:
 | 
				
			||||||
 | 
							static std::string glDebugMsgSeverity(unsigned int severity);
 | 
				
			||||||
 | 
							static std::string glDebugMsgSource(unsigned int source);
 | 
				
			||||||
 | 
							static std::string glDebugMsgType(unsigned int type);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,8 @@
 | 
				
			||||||
#include "Graphics/VertexLayout.h"
 | 
					#include "Graphics/VertexLayout.h"
 | 
				
			||||||
#include "UserInterface/UserInterface.h" 
 | 
					#include "UserInterface/UserInterface.h" 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Utility/Stringifier.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <glad/glad.h>
 | 
					#include <glad/glad.h>
 | 
				
			||||||
#include <glfw/glfw3.h>
 | 
					#include <glfw/glfw3.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,9 +25,59 @@ namespace Light {
 | 
				
			||||||
		LT_ENGINE_ASSERT(gladLoadGLLoader((GLADloadproc)glfwGetProcAddress),
 | 
							LT_ENGINE_ASSERT(gladLoadGLLoader((GLADloadproc)glfwGetProcAddress),
 | 
				
			||||||
		                 "glGraphicsContext::glGraphicsContext: gladLoadGLLoader: failed to initialize opengl context");
 | 
							                 "glGraphicsContext::glGraphicsContext: gladLoadGLLoader: failed to initialize opengl context");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							SetDebugMessageCallback();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		LT_ENGINE_INFO("glGraphicsContext:");
 | 
							LT_ENGINE_INFO("glGraphicsContext:");
 | 
				
			||||||
		LT_ENGINE_INFO("        Renderer: {}", glGetString(GL_RENDERER));
 | 
							LT_ENGINE_INFO("        Renderer: {}", glGetString(GL_RENDERER));
 | 
				
			||||||
		LT_ENGINE_INFO("        Version: {}", glGetString(GL_VERSION));
 | 
							LT_ENGINE_INFO("        Version: {}", glGetString(GL_VERSION));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void glGraphicsContext::SetDebugMessageCallback()
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
					#if defined(LT_DEBUG)
 | 
				
			||||||
 | 
							glEnable(GL_DEBUG_OUTPUT);
 | 
				
			||||||
 | 
							glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, nullptr, GL_TRUE);
 | 
				
			||||||
 | 
					#elif defined(LT_RELEASE)
 | 
				
			||||||
 | 
							glEnable(GL_DEBUG_OUTPUT);
 | 
				
			||||||
 | 
							glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, nullptr, GL_FALSE);
 | 
				
			||||||
 | 
							glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_HIGH, 0, nullptr, GL_TRUE);
 | 
				
			||||||
 | 
					#else // LT_DIST
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							glDebugMessageCallback([](unsigned int source, unsigned int type,
 | 
				
			||||||
 | 
							                          unsigned int id, unsigned int severity,
 | 
				
			||||||
 | 
							                          int length, const char* message,
 | 
				
			||||||
 | 
							                          const void* userParam) 
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								switch (severity)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								case GL_DEBUG_SEVERITY_HIGH:
 | 
				
			||||||
 | 
									LT_ENGINE_CRITICAL("glMessageCallback: Severity: {} :: Source: {} :: Type: {} :: ID: {}",
 | 
				
			||||||
 | 
									                   Stringifier::glDebugMsgSeverity(severity),
 | 
				
			||||||
 | 
									                   Stringifier::glDebugMsgSource(source),
 | 
				
			||||||
 | 
									                   Stringifier::glDebugMsgType(type),
 | 
				
			||||||
 | 
									                   id);
 | 
				
			||||||
 | 
									LT_ENGINE_CRITICAL("        {}", message);
 | 
				
			||||||
 | 
									return;
 | 
				
			||||||
 | 
								case GL_DEBUG_SEVERITY_MEDIUM: case  GL_DEBUG_SEVERITY_LOW:
 | 
				
			||||||
 | 
									LT_ENGINE_WARN("glMessageCallback: Severity: {} :: Source: {} :: Type: {} :: ID: {}",
 | 
				
			||||||
 | 
									               Stringifier::glDebugMsgSeverity(severity),
 | 
				
			||||||
 | 
									               Stringifier::glDebugMsgSource(source),
 | 
				
			||||||
 | 
									               Stringifier::glDebugMsgType(type),
 | 
				
			||||||
 | 
									               id);
 | 
				
			||||||
 | 
									LT_ENGINE_WARN("        {}", message);
 | 
				
			||||||
 | 
									return;
 | 
				
			||||||
 | 
								case GL_DEBUG_SEVERITY_NOTIFICATION:
 | 
				
			||||||
 | 
									LT_ENGINE_TRACE("glMessageCallback: Severity: {} :: Source: {} :: Type: {} :: ID: {}",
 | 
				
			||||||
 | 
									                Stringifier::glDebugMsgSeverity(severity),
 | 
				
			||||||
 | 
									                Stringifier::glDebugMsgSource(source),
 | 
				
			||||||
 | 
									                Stringifier::glDebugMsgType(type),
 | 
				
			||||||
 | 
									                id);
 | 
				
			||||||
 | 
									LT_ENGINE_TRACE("        {}", message);
 | 
				
			||||||
 | 
									return;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}, nullptr);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,9 @@ namespace Light {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public:
 | 
						public:
 | 
				
			||||||
		glGraphicsContext(GLFWwindow* windowHandle);
 | 
							glGraphicsContext(GLFWwindow* windowHandle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private:
 | 
				
			||||||
 | 
							void SetDebugMessageCallback();
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										9
									
								
								Sandbox/res/fragment.fragment
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Sandbox/res/fragment.fragment
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					#version 450 core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					out vec4 FragColor;
 | 
				
			||||||
 | 
					in vec4 vsout_Color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void main()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						FragColor = vsout_Color;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										12
									
								
								Sandbox/res/vertex.vertex
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Sandbox/res/vertex.vertex
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					#version 450 core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					layout(location = 0) in vec2 a_Position;
 | 
				
			||||||
 | 
					layout(location = 1) in vec4 a_Color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					out vec4 vsout_Color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void main()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						gl_Position = vec4(a_Position, 0.0, 1.0);
 | 
				
			||||||
 | 
						vsout_Color = a_Color;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue