gedeng/cpp/RenderBackend.cpp
karl 3c35a730f5 Add basic setup for shadow rendering
adapted from the previous ECS project. working to some extent, but far from ideal
2021-05-20 00:15:58 +02:00

49 lines
1.3 KiB
C++

#include "Gedeng/RenderBackend.h"
namespace Gedeng {
void RenderBackend::initialize_window(unsigned int width, unsigned int height, String title) {
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 4);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
window = glfwCreateWindow(width, height, title, NULL, NULL);
glfwMakeContextCurrent(window);
gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
// FIXME: Disabled because of a bug with particles: they're discarded as if the floor moves with the camera
glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
bool RenderBackend::is_window_created() {
return window != nullptr;
}
void RenderBackend::set_depth_test_enabled(bool enabled) {
if (enabled) {
glEnable(GL_DEPTH_TEST);
} else {
glDisable(GL_DEPTH_TEST);
}
}
bool RenderBackend::does_window_want_to_close() {
return glfwWindowShouldClose(window);
}
GLFWwindow *RenderBackend::get_window() {
return window;
}
void RenderBackend::render() {
glfwSwapBuffers(window);
}
} // namespace Gedeng