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[] =
|
||||
{
|
||||
-0.5f, -0.5f,
|
||||
0.5f, -0.5f,
|
||||
0.0f, 0.5f,
|
||||
-0.5f, -0.5f, 1.0f, 0.0f, 0.0f, 1.0f,
|
||||
0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 1.0f,
|
||||
0.0f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f,
|
||||
};
|
||||
|
||||
m_VertexBuffer = std::unique_ptr<VertexBuffer>(VertexBuffer::Create(2 * 3, vertices));
|
||||
m_VertexLayout = std::unique_ptr<VertexLayout>(VertexLayout::Create(m_VertexBuffer.get(), { VertexElementType::Float2 }));
|
||||
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, VertexElementType::Float4 }));
|
||||
}
|
||||
|
||||
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 "UserInterface/UserInterface.h"
|
||||
|
||||
#include "Utility/Stringifier.h"
|
||||
|
||||
#include <glad/glad.h>
|
||||
#include <glfw/glfw3.h>
|
||||
|
||||
|
@ -23,9 +25,59 @@ namespace Light {
|
|||
LT_ENGINE_ASSERT(gladLoadGLLoader((GLADloadproc)glfwGetProcAddress),
|
||||
"glGraphicsContext::glGraphicsContext: gladLoadGLLoader: failed to initialize opengl context");
|
||||
|
||||
SetDebugMessageCallback();
|
||||
|
||||
LT_ENGINE_INFO("glGraphicsContext:");
|
||||
LT_ENGINE_INFO(" Renderer: {}", glGetString(GL_RENDERER));
|
||||
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:
|
||||
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