Move app init state mapping to renderer gl
This commit is contained in:
133
src/app.cpp
133
src/app.cpp
@@ -5,6 +5,7 @@
|
||||
#include "node_dialog_open.h"
|
||||
#include "node_progress_bar.h"
|
||||
#include "mp4enc.h"
|
||||
#include "renderer_gl/opengl_capabilities.h"
|
||||
|
||||
#ifdef __APPLE__
|
||||
#include <Foundation/Foundation.h>
|
||||
@@ -38,6 +39,100 @@ App* App::I = nullptr; // singleton
|
||||
std::deque<AppTask> App::render_tasklist;
|
||||
std::mutex App::render_task_mutex;
|
||||
std::condition_variable App::render_cv;
|
||||
|
||||
namespace {
|
||||
|
||||
[[nodiscard]] GLenum debug_severity_notification() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::debug_severity_notification());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum debug_severity_low() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::debug_severity_low());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum debug_severity_medium() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::debug_severity_medium());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum debug_severity_high() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::debug_severity_high());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum debug_output_state() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::debug_output_state());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum debug_output_synchronous_state() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::debug_output_synchronous_state());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum version_string_name() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::version_string_name());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum vendor_string_name() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::vendor_string_name());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum renderer_string_name() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::renderer_string_name());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum shading_language_version_string_name() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::shading_language_version_string_name());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum depth_test_state() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::depth_test_state());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum program_point_size_state() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::program_point_size_state());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum line_smooth_state() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::line_smooth_state());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum source_alpha_blend_factor() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::source_alpha_blend_factor());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum one_minus_source_alpha_blend_factor() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::one_minus_source_alpha_blend_factor());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum add_blend_equation() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::add_blend_equation());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLenum max_blend_equation() noexcept
|
||||
{
|
||||
return static_cast<GLenum>(pp::renderer::gl::max_blend_equation());
|
||||
}
|
||||
|
||||
[[nodiscard]] GLint rgba8_internal_format() noexcept
|
||||
{
|
||||
return static_cast<GLint>(pp::renderer::gl::rgba8_internal_format());
|
||||
}
|
||||
|
||||
}
|
||||
std::thread App::render_thread;
|
||||
std::thread::id App::render_thread_id;
|
||||
bool App::render_running = false;
|
||||
@@ -391,19 +486,21 @@ void handle_gl_callback(GLenum source, GLenum type, GLuint id,
|
||||
GLenum severity, GLsizei length, const GLchar* message, const void* userParam)
|
||||
{
|
||||
static std::map<GLenum, int> colors = {
|
||||
{ GL_DEBUG_SEVERITY_NOTIFICATION, 8 },
|
||||
{ GL_DEBUG_SEVERITY_LOW, 8 },
|
||||
{ GL_DEBUG_SEVERITY_MEDIUM, FOREGROUND_GREEN | FOREGROUND_INTENSITY },
|
||||
{ GL_DEBUG_SEVERITY_HIGH, FOREGROUND_RED | FOREGROUND_INTENSITY },
|
||||
{ debug_severity_notification(), 8 },
|
||||
{ debug_severity_low(), 8 },
|
||||
{ debug_severity_medium(), FOREGROUND_GREEN | FOREGROUND_INTENSITY },
|
||||
{ debug_severity_high(), FOREGROUND_RED | FOREGROUND_INTENSITY },
|
||||
};
|
||||
if (severity == GL_DEBUG_SEVERITY_HIGH || severity == GL_DEBUG_SEVERITY_MEDIUM || severity == GL_DEBUG_SEVERITY_LOW)
|
||||
if (severity == debug_severity_high()
|
||||
|| severity == debug_severity_medium()
|
||||
|| severity == debug_severity_low())
|
||||
{
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), colors[severity]);
|
||||
LOG("OPENGL: %.*s", length, message);
|
||||
FlushConsoleInputBuffer(GetStdHandle(STD_OUTPUT_HANDLE));
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), info.wAttributes);
|
||||
#ifdef _DEBUG
|
||||
if (severity == GL_DEBUG_SEVERITY_HIGH)
|
||||
if (severity == debug_severity_high())
|
||||
__debugbreak();
|
||||
#endif
|
||||
}
|
||||
@@ -421,8 +518,8 @@ void App::init()
|
||||
render_task([]
|
||||
{
|
||||
glDebugMessageCallback(handle_gl_callback, nullptr);
|
||||
glEnable(GL_DEBUG_OUTPUT);
|
||||
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
|
||||
glEnable(debug_output_state());
|
||||
glEnable(debug_output_synchronous_state());
|
||||
});
|
||||
}
|
||||
#endif
|
||||
@@ -431,10 +528,10 @@ void App::init()
|
||||
|
||||
render_task([]
|
||||
{
|
||||
LOG("GL version: %s", glGetString(GL_VERSION));
|
||||
LOG("GL vendor: %s", glGetString(GL_VENDOR));
|
||||
LOG("GL renderer: %s", glGetString(GL_RENDERER));
|
||||
LOG("GLSL version: %s", glGetString(GL_SHADING_LANGUAGE_VERSION));
|
||||
LOG("GL version: %s", glGetString(version_string_name()));
|
||||
LOG("GL vendor: %s", glGetString(vendor_string_name()));
|
||||
LOG("GL renderer: %s", glGetString(renderer_string_name()));
|
||||
LOG("GLSL version: %s", glGetString(shading_language_version_string_name()));
|
||||
|
||||
//GLint n_exts;
|
||||
//glGetIntegerv(GL_NUM_EXTENSIONS, &n_exts);
|
||||
@@ -447,13 +544,13 @@ void App::init()
|
||||
// }
|
||||
//}
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glDisable(depth_test_state());
|
||||
#if defined(_WIN32) || defined(__OSX__)
|
||||
glEnable(GL_PROGRAM_POINT_SIZE);
|
||||
glEnable(GL_LINE_SMOOTH);
|
||||
glEnable(program_point_size_state());
|
||||
glEnable(line_smooth_state());
|
||||
#endif
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glBlendEquationSeparate(GL_FUNC_ADD, GL_MAX);
|
||||
glBlendFunc(source_alpha_blend_factor(), one_minus_source_alpha_blend_factor());
|
||||
glBlendEquationSeparate(add_blend_equation(), max_blend_equation());
|
||||
});
|
||||
|
||||
int run_counter = Settings::value<Serializer::Integer>("run_counter") + 1;
|
||||
@@ -468,7 +565,7 @@ void App::init()
|
||||
initLayout();
|
||||
title_update();
|
||||
|
||||
uirtt.create(width, height, -1, GL_RGBA8, true);
|
||||
uirtt.create(width, height, -1, rgba8_internal_format(), true);
|
||||
|
||||
if (Settings::value_or<Serializer::Boolean>("auto-timelapse", true))
|
||||
rec_start();
|
||||
|
||||
Reference in New Issue
Block a user