Maintenance

- Added LIGHT_OPENGL_ENABLE_SHADER_INFO_LOG to config.h
- Some maintenance
This commit is contained in:
Light 2021-08-01 11:57:51 +04:30
parent fb4ba5c8bc
commit 42f26ac59e
11 changed files with 82 additions and 17 deletions

View file

@ -76,16 +76,24 @@ namespace Light {
//====================================================================== OPERATIONS ======================================================================// //====================================================================== OPERATIONS ======================================================================//
//========== ESSENTIAL_HEADERS ==========// //========== ESSENTIAL_HEADERS ==========//
/* config */
#ifndef LIGHT_CONFIG_H
#include "Base/Config.h"
#endif
/* debug */ /* debug */
#ifndef LT_LOGGER_H #ifndef LIGHT_LOGGER_H
#include "Debug/Logger.h" #include "Debug/Logger.h"
#define LT_LOGGER_H
#endif #endif
#include "Debug/Exceptions.h" #include "Debug/Exceptions.h"
/* portables */ /* portables */
#ifndef LIGHT_DEBUG_TRAP_H
#include "Base/Portables/DebugTrap.h" #include "Base/Portables/DebugTrap.h"
#endif
/* utility */ /* utility */
#ifndef LIGHT_STRINGIFIER_H
#include "Utility/Stringifier.h" #include "Utility/Stringifier.h"
#endif
//========== ESSENTIAL_HEADERS ==========// //========== ESSENTIAL_HEADERS ==========//

View file

@ -1,5 +1,15 @@
#pragma once #pragma once
#ifndef LIGHT_CONFIG_H
#define LIGHT_CONFIG_H
// #todo: add project config stuff //
// you can uncomment any of these definitions to config the project to your liking
//
// #define LIGHT_IGNORE_UNDEFINED_DEBUG_BREAK // suppress undefined debug trap
// #define LIGHT_IGNORE_UNDEFINED_DEBUG_TRAP
// log opengl shader compile info
// #define LIGHT_OPENGL_ENABLE_SHADER_INFO_LOG
#endif

View file

@ -1,4 +1,6 @@
#pragma once #pragma once
#ifndef LIGHT_DEBUG_TRAP_H
#define LIGHT_DEBUG_TRAP_H
// https://github.com/nemequ/portable-snippets/tree/master/debug-trap // https://github.com/nemequ/portable-snippets/tree/master/debug-trap
@ -80,8 +82,8 @@
#endif #endif
#if !defined(LT_DEBUG_TRAP) #if !defined(LT_DEBUG_TRAP)
#if !defined(LIGHT_IGNORE_UNDEFINED_DEBUG_BREAK) #if !defined(LIGHT_IGNORE_UNDEFINED_DEBUG_TRAP)
#error "failed to define LT_BREAK, define LIGHT_IGNORE_UNDEFINED_DEBUG_BREAK to disable this error" #error "failed to define LT_BREAK, define LIGHT_IGNORE_UNDEFINED_DEBUG_TRAP in Config.h to disable this error"
#elif defined(LIGHT_DIST) #elif defined(LIGHT_DIST)
#ifdef _MSC_VER #ifdef _MSC_VER
@ -101,3 +103,4 @@
#endif #endif
#endif #endif
#endif #endif
#endif

View file

@ -66,6 +66,7 @@ namespace Light {
{ {
// update layers // update layers
LT_PROFILE_SCOPE("GameLoop::Update"); LT_PROFILE_SCOPE("GameLoop::Update");
LT_PROFILE_SCOPE("GameLoop::Updated");
for (auto it = m_LayerStack->begin(); it != m_LayerStack->end(); it++) for (auto it = m_LayerStack->begin(); it != m_LayerStack->end(); it++)
(*it)->OnUpdate(deltaTimer.GetDeltaTime()); (*it)->OnUpdate(deltaTimer.GetDeltaTime());

View file

@ -1,6 +1,8 @@
#pragma once #pragma once
#define DXC(x) if(FAILED(hr = x)) throw dxException(hr, __FILE__, __LINE__) #define DXC(x) DXC_NO_REDIFINITION(x, __LINE__)
#define DXC_NO_REDIFINITION(x, line) DXC_NO_REDIFINITION2(x, line)
#define DXC_NO_REDIFINITION2(x, line) HRESULT hr##line; if(FAILED(hr##line = x)) throw dxException(hr##line, __FILE__, line)
namespace Light { namespace Light {

View file

@ -56,7 +56,14 @@ namespace Light {
} }
#define LT_PROFILE_SCOPE(name) InstrumentorTimer timer##__LINE__ (name) /* scope */
#define LT_PROFILE_SCOPE(name) LT_PROFILE_SCOPE_NO_REDIFINITION(name, __LINE__)
#define LT_PROFILE_SCOPE_NO_REDIFINITION(name, line) LT_PROFILE_SCOPE_NO_REDIFINITION2(name, line)
#define LT_PROFILE_SCOPE_NO_REDIFINITION2(name, line) InstrumentorTimer timer##line(name)
/* function */
#define LT_PROFILE_FUNCTION LT_PROFILE_SCOPE(__FUNCSIG__) #define LT_PROFILE_FUNCTION LT_PROFILE_SCOPE(__FUNCSIG__)
/* session */
#define LT_PROFILE_BEGIN_SESSION(outputPath) ::Light::Instrumentor::BeginSession(outputPath) #define LT_PROFILE_BEGIN_SESSION(outputPath) ::Light::Instrumentor::BeginSession(outputPath)
#define LT_PROFILE_END_SESSION() ::Light::Instrumentor::EndSession() #define LT_PROFILE_END_SESSION() ::Light::Instrumentor::EndSession()

View file

@ -1,6 +1,7 @@
#pragma once #pragma once
#ifndef LIGHT_LOGGER_H
#define LIGHT_LOGGER_H
#define LT_LOGGER_H
#include "Base/Base.h" #include "Base/Base.h"
#include <spdlog/spdlog.h> #include <spdlog/spdlog.h>
@ -68,3 +69,4 @@ namespace Light {
} }
#endif

View file

@ -1,4 +1,6 @@
#pragma once #pragma once
#ifndef LIGHT_STRINGIFIER_H
#define LIGHT_STRINGIFIER_H
#include "Base/Base.h" #include "Base/Base.h"
@ -19,3 +21,5 @@ namespace Light {
}; };
} }
#endif

View file

@ -73,7 +73,6 @@ namespace Light {
#endif #endif
// create device and swap chain // create device and swap chain
HRESULT hr;
DXC(D3D11CreateDeviceAndSwapChain(nullptr, DXC(D3D11CreateDeviceAndSwapChain(nullptr,
D3D_DRIVER_TYPE_HARDWARE, D3D_DRIVER_TYPE_HARDWARE,
NULL, NULL,
@ -99,7 +98,6 @@ namespace Light {
// create render target view // create render target view
Microsoft::WRL::ComPtr<ID3D11Resource> backBuffer; Microsoft::WRL::ComPtr<ID3D11Resource> backBuffer;
HRESULT hr;
DXC(context->GetSwapChain()->GetBuffer(0u, __uuidof(ID3D11Resource), &backBuffer)); DXC(context->GetSwapChain()->GetBuffer(0u, __uuidof(ID3D11Resource), &backBuffer));
DXC(context->GetDevice()->CreateRenderTargetView(backBuffer.Get(), nullptr, &context->GetRenderTargetViewRef())); DXC(context->GetDevice()->CreateRenderTargetView(backBuffer.Get(), nullptr, &context->GetRenderTargetViewRef()));

View file

@ -67,6 +67,34 @@ namespace Light {
} }
/* #TEMP_HANDLE_SHADER_COMPILE_FAILURE# */ /* #TEMP_HANDLE_SHADER_COMPILE_FAILURE# */
#ifdef LIGHT_OPENGL_ENABLE_SHADER_INFO_LOG
{
int logLength = 0;
glGetShaderiv(vertexShader, GL_INFO_LOG_LENGTH, &logLength);
if(logLength)
{
char* infoLog = (char*)alloca(logLength);
glGetShaderInfoLog(vertexShader, logLength, &logLength, &infoLog[0]);
LT_ENGINE_TRACE(infoLog);
}
}
{
int logLength = 0;
glGetShaderiv(fragmentShader, GL_INFO_LOG_LENGTH, &logLength);
if (logLength)
{
char* infoLog = (char*)alloca(logLength);
glGetShaderInfoLog(fragmentShader, logLength, &logLength, &infoLog[0]);
LT_ENGINE_TRACE(infoLog);
}
}
#endif
// attach shaders // attach shaders
glAttachShader(m_ShaderID, vertexShader); glAttachShader(m_ShaderID, vertexShader);
glAttachShader(m_ShaderID, fragmentShader); glAttachShader(m_ShaderID, fragmentShader);

View file

@ -36,7 +36,9 @@ namespace Light {
void SceneHierarchyPanel::DrawNode(Entity entity, const std::string& label) void SceneHierarchyPanel::DrawNode(Entity entity, const std::string& label)
{ {
ImGuiTreeNodeFlags flags = (m_SelectionContext == entity ? ImGuiTreeNodeFlags_Selected : NULL) | ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_SpanFullWidth; ImGuiTreeNodeFlags flags = (m_SelectionContext == entity ? ImGuiTreeNodeFlags_Selected : NULL) |
ImGuiTreeNodeFlags_OpenOnArrow |
ImGuiTreeNodeFlags_SpanFullWidth ;
bool expanded = ImGui::TreeNodeEx((void*)(uint64_t)(uint32_t)(entity), flags, label.c_str()); bool expanded = ImGui::TreeNodeEx((void*)(uint64_t)(uint32_t)(entity), flags, label.c_str());