diff options
Diffstat (limited to 'src/rms.cpp')
| -rw-r--r-- | src/rms.cpp | 86 |
1 files changed, 58 insertions, 28 deletions
diff --git a/src/rms.cpp b/src/rms.cpp index 7238920..b7cf93b 100644 --- a/src/rms.cpp +++ b/src/rms.cpp @@ -1,43 +1,73 @@ -#include <SFML/Window.hpp> -#include "opengl/renderer.hpp" +#include <GL/glew.h> +#include <GLFW/glfw3.h> +#include "rms.hpp" -#define WIDTH 1200 -#define HEIGHT 800 +APP_CONTEXT *AppContext=nullptr; + +void OnWindowResize(GLFWwindow* window, int width, int height){ + AppContext->renderer.AjustViewport(width,height); +} int main(int argc, char *argv[]) { - // Init SFML - sf::ContextSettings settings; - settings.depthBits = 24; - settings.stencilBits = 8; - settings.antialiasingLevel = 3; - settings.attributeFlags=sf::ContextSettings::Default; - sf::Window window(sf::VideoMode(WIDTH, HEIGHT,32), "SFML/OpenGL Ray Marching", sf::Style::Close, settings); - window.setFramerateLimit(60); // Limit to 60 frames per second + GLFWwindow* window; + + /* Initialize the library */ + if (!glfwInit()) + return -1; + + /* Create a windowed mode window and its OpenGL context */ + window = glfwCreateWindow(WIDTH, HEIGHT, "SFML/OpenGL Ray Marching", NULL, NULL); + if (!window) + { + glfwTerminate(); + return -1; + } + + /* Make the window's context current */ + glfwMakeContextCurrent(window); // Init Renderer/OpenGL - Renderer renderer(WIDTH,HEIGHT,"main.glsl"); + APP_CONTEXT InitContext={ + Renderer(WIDTH,HEIGHT,"main.glsl"), + HUD(window) + }; + AppContext=&InitContext; + InitContext.renderer.RefreshShader(); - // Main loop - bool running=true; - while (running) + + glfwSetWindowSizeCallback(window, OnWindowResize); + + /* Loop until the user closes the window */ + double InitTime = glfwGetTime(); + double LastTime = InitTime; + while (!glfwWindowShouldClose(window)) { - // gestion des évènements - sf::Event event; - while (window.pollEvent(event)) - { - if (event.type == sf::Event::Closed) - running=false; - else if (event.type == sf::Event::Resized) - renderer.AjustViewport(event.size.width,event.size.height); - else if (event.key.code == sf::Keyboard::R) - renderer.RefreshShader(); + double CurrentTime = glfwGetTime(); + AppContext->hud.m_Context->time=CurrentTime-InitTime; + + /* Render here */ + glClear(GL_COLOR_BUFFER_BIT); + + if(CurrentTime-LastTime >= 1){ + AppContext->hud.m_Context->fps=AppContext->hud.m_Context->fps_frame_counter; + AppContext->hud.m_Context->fps_frame_counter=0; + LastTime=CurrentTime; } - renderer.Render(); - window.display(); // Refresh screen + AppContext->renderer.Render(); + AppContext->hud.Render(); + + /* Swap front and back buffers */ + glfwSwapBuffers(window); + + /* Poll for and process events */ + glfwPollEvents(); + AppContext->hud.m_Context->fps_frame_counter++; } + glfwTerminate(); return 0; + } |
