mirror of
https://github.com/allemangD/toddcox-visualize.git
synced 2025-11-10 03:52:48 -05:00
./vis source tree boilerplate
This commit is contained in:
@@ -14,26 +14,27 @@ include(External/imgui.cmake)
|
|||||||
include(External/json.cmake)
|
include(External/json.cmake)
|
||||||
include(External/peglib.cmake)
|
include(External/peglib.cmake)
|
||||||
|
|
||||||
include_directories(include)
|
#include_directories(include)
|
||||||
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
add_subdirectory(tc)
|
add_subdirectory(tc)
|
||||||
|
add_subdirectory(vis)
|
||||||
|
|
||||||
add_custom_target(resources DEPENDS resources_output)
|
#add_custom_target(resources DEPENDS resources_output)
|
||||||
add_custom_command(
|
#add_custom_command(
|
||||||
OUTPUT resources_output
|
# OUTPUT resources_output
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/res ${CMAKE_CURRENT_BINARY_DIR}/res
|
# COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/res ${CMAKE_CURRENT_BINARY_DIR}/res
|
||||||
COMMENT "Copying Resources")
|
# COMMENT "Copying Resources")
|
||||||
|
#
|
||||||
add_executable(vis
|
#add_executable(vis
|
||||||
src/main.cpp
|
# src/main.cpp
|
||||||
src/gl/debug.hpp
|
# src/gl/debug.hpp
|
||||||
src/gl/shader.hpp
|
# src/gl/shader.hpp
|
||||||
src/gl/buffer.hpp
|
# src/gl/buffer.hpp
|
||||||
src/gl/vertexarray.hpp
|
# src/gl/vertexarray.hpp
|
||||||
src/gl/types.hpp)
|
# src/gl/types.hpp)
|
||||||
target_link_libraries(vis glfw glad imgui eigen nlohmann_json)
|
#target_link_libraries(vis glfw glad imgui eigen nlohmann_json)
|
||||||
add_dependencies(vis resources)
|
#add_dependencies(vis resources)
|
||||||
|
|
||||||
#add_executable(serial src/serialtest.cpp)
|
#add_executable(serial src/serialtest.cpp)
|
||||||
#target_link_libraries(serial eigen nlohmann_json)
|
#target_link_libraries(serial eigen nlohmann_json)
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#ifndef NDEBUG
|
|
||||||
|
|
||||||
void GLAPIENTRY log_gl_debug_callback(
|
|
||||||
GLenum source,
|
|
||||||
GLenum type,
|
|
||||||
GLuint id,
|
|
||||||
GLenum severity,
|
|
||||||
GLsizei length,
|
|
||||||
const GLchar *message,
|
|
||||||
const void *userParam
|
|
||||||
) {
|
|
||||||
std::string s_source;
|
|
||||||
switch(type){
|
|
||||||
case GL_DEBUG_SOURCE_API:
|
|
||||||
s_source = "API:";
|
|
||||||
case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
|
|
||||||
s_source = "WINDOW:";
|
|
||||||
case GL_DEBUG_SOURCE_SHADER_COMPILER:
|
|
||||||
s_source = "SHADER:";
|
|
||||||
case GL_DEBUG_SOURCE_THIRD_PARTY:
|
|
||||||
s_source = "3P:";
|
|
||||||
case GL_DEBUG_SOURCE_APPLICATION:
|
|
||||||
s_source = "APP:";
|
|
||||||
default:
|
|
||||||
s_source = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string s_type;
|
|
||||||
switch (type) {
|
|
||||||
case GL_DEBUG_TYPE_ERROR:
|
|
||||||
s_type = "ERROR:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
|
|
||||||
s_type = "DEPRECATED:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
|
|
||||||
s_type = "UNDEFINED:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_TYPE_PORTABILITY:
|
|
||||||
s_type = "PORTABILITY:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_TYPE_PERFORMANCE:
|
|
||||||
s_type = "PERFORMANCE:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_TYPE_MARKER:
|
|
||||||
s_type = "MARKER:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_TYPE_PUSH_GROUP:
|
|
||||||
s_type = "PUSH_GROUP:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_TYPE_POP_GROUP:
|
|
||||||
s_type = "POP_GROUP:";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
s_type = "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string s_severity;
|
|
||||||
switch (severity) {
|
|
||||||
case GL_DEBUG_SEVERITY_HIGH:
|
|
||||||
s_severity = "HIGH:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_SEVERITY_MEDIUM:
|
|
||||||
s_severity = "MED:";
|
|
||||||
break;
|
|
||||||
case GL_DEBUG_SEVERITY_LOW:
|
|
||||||
s_severity = "LOW:";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
s_severity = "INFO:";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cerr << "GL:" << s_source << s_type << s_severity << " " << message << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -9,7 +9,7 @@ add_library(tc
|
|||||||
src/groups.cpp
|
src/groups.cpp
|
||||||
src/lang.cpp
|
src/lang.cpp
|
||||||
)
|
)
|
||||||
target_link_libraries(tc PUBLIC peglib::peglib fmt::fmt)
|
target_link_libraries(tc peglib::peglib fmt::fmt)
|
||||||
target_include_directories(tc PUBLIC include)
|
target_include_directories(tc PUBLIC include)
|
||||||
|
|
||||||
add_library(tc::tc ALIAS tc)
|
add_library(tc::tc ALIAS tc)
|
||||||
|
|||||||
12
vis/CMakeLists.txt
Normal file
12
vis/CMakeLists.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
add_executable(vis
|
||||||
|
src/main.cpp
|
||||||
|
)
|
||||||
|
target_link_libraries(vis
|
||||||
|
tc::tc
|
||||||
|
fmt::fmt
|
||||||
|
glfw
|
||||||
|
glad
|
||||||
|
imgui
|
||||||
|
eigen
|
||||||
|
nlohmann_json
|
||||||
|
)
|
||||||
80
vis/src/debug.hpp
Normal file
80
vis/src/debug.hpp
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
|
||||||
|
void GLAPIENTRY log_gl_debug_callback(
|
||||||
|
GLenum source,
|
||||||
|
GLenum type,
|
||||||
|
GLuint id,
|
||||||
|
GLenum severity,
|
||||||
|
GLsizei length,
|
||||||
|
const GLchar *message,
|
||||||
|
const void *userParam
|
||||||
|
) {
|
||||||
|
std::string s_source;
|
||||||
|
switch (type) {
|
||||||
|
case GL_DEBUG_SOURCE_API:
|
||||||
|
s_source = "API:";
|
||||||
|
case GL_DEBUG_SOURCE_WINDOW_SYSTEM:
|
||||||
|
s_source = "WINDOW:";
|
||||||
|
case GL_DEBUG_SOURCE_SHADER_COMPILER:
|
||||||
|
s_source = "SHADER:";
|
||||||
|
case GL_DEBUG_SOURCE_THIRD_PARTY:
|
||||||
|
s_source = "3P:";
|
||||||
|
case GL_DEBUG_SOURCE_APPLICATION:
|
||||||
|
s_source = "APP:";
|
||||||
|
default:
|
||||||
|
s_source = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string s_type;
|
||||||
|
switch (type) {
|
||||||
|
case GL_DEBUG_TYPE_ERROR:
|
||||||
|
s_type = "ERROR:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
|
||||||
|
s_type = "DEPRECATED:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
|
||||||
|
s_type = "UNDEFINED:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_TYPE_PORTABILITY:
|
||||||
|
s_type = "PORTABILITY:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_TYPE_PERFORMANCE:
|
||||||
|
s_type = "PERFORMANCE:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_TYPE_MARKER:
|
||||||
|
s_type = "MARKER:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_TYPE_PUSH_GROUP:
|
||||||
|
s_type = "PUSH_GROUP:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_TYPE_POP_GROUP:
|
||||||
|
s_type = "POP_GROUP:";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
s_type = "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string s_severity;
|
||||||
|
switch (severity) {
|
||||||
|
case GL_DEBUG_SEVERITY_HIGH:
|
||||||
|
s_severity = "HIGH:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_SEVERITY_MEDIUM:
|
||||||
|
s_severity = "MED:";
|
||||||
|
break;
|
||||||
|
case GL_DEBUG_SEVERITY_LOW:
|
||||||
|
s_severity = "LOW:";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
s_severity = "INFO:";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt::print(stderr, "GL:{}{}{} {}", s_source, s_type, s_severity, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
91
vis/src/main.cpp
Normal file
91
vis/src/main.cpp
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
#include <glad/glad.h>
|
||||||
|
#include <GLFW/glfw3.h>
|
||||||
|
#include <imgui.h>
|
||||||
|
#include <backends/imgui_impl_glfw.h>
|
||||||
|
#include <backends/imgui_impl_opengl3.h>
|
||||||
|
|
||||||
|
#include <fmt/core.h>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
#include "debug.hpp"
|
||||||
|
|
||||||
|
int run(GLFWwindow *window, ImGuiContext *ctx) {
|
||||||
|
glClearColor(0.1, 0.1, 0.9, 1.0);
|
||||||
|
|
||||||
|
while (!glfwWindowShouldClose(window)) {
|
||||||
|
glfwPollEvents();
|
||||||
|
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
ImGui_ImplOpenGL3_NewFrame();
|
||||||
|
ImGui_ImplGlfw_NewFrame();
|
||||||
|
ImGui::NewFrame();
|
||||||
|
ImGui::Begin("Hello There!", nullptr, ImGuiWindowFlags_None);
|
||||||
|
ImGui::Text("General Kenobi.");
|
||||||
|
ImGui::End();
|
||||||
|
ImGui::Render();
|
||||||
|
|
||||||
|
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
|
||||||
|
glfwSwapBuffers(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
if (!glfwInit()) {
|
||||||
|
fmt::print(stderr, "GLFW : Failed Initialization\n");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
|
||||||
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
|
||||||
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||||
|
GLFWwindow *window = glfwCreateWindow(
|
||||||
|
1280, 720,
|
||||||
|
"Cosets Visualization",
|
||||||
|
nullptr, nullptr
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!window) {
|
||||||
|
fmt::print("GLFW : Failed to create window.\n");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
glfwMakeContextCurrent(window);
|
||||||
|
glfwSwapInterval(1);
|
||||||
|
gladLoadGLLoader((GLADloadproc) glfwGetProcAddress);
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
glEnable(GL_DEBUG_OUTPUT);
|
||||||
|
glDebugMessageCallback(log_gl_debug_callback, nullptr);
|
||||||
|
glDebugMessageControl(
|
||||||
|
GL_DONT_CARE, GL_DEBUG_TYPE_OTHER,
|
||||||
|
GL_DEBUG_SEVERITY_NOTIFICATION,
|
||||||
|
0, nullptr, GL_FALSE
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
IMGUI_CHECKVERSION();
|
||||||
|
ImGuiContext *ctx = ImGui::CreateContext();
|
||||||
|
ImGui_ImplGlfw_InitForOpenGL(window, true);
|
||||||
|
ImGui_ImplOpenGL3_Init("#version 130");
|
||||||
|
|
||||||
|
int code = EXIT_SUCCESS;
|
||||||
|
|
||||||
|
try {
|
||||||
|
code = run(window, ctx);
|
||||||
|
} catch (const std::exception &ex) {
|
||||||
|
fmt::print(stderr, "{}\n", ex.what());
|
||||||
|
code = EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui_ImplOpenGL3_Shutdown();
|
||||||
|
ImGui_ImplGlfw_Shutdown();
|
||||||
|
ImGui::DestroyContext();
|
||||||
|
|
||||||
|
glfwDestroyWindow(window);
|
||||||
|
glfwTerminate();
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user