aboutsummaryrefslogtreecommitdiff
path: root/src/rms.cpp
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2020-07-07 06:40:50 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2020-07-07 06:40:50 +0200
commitaac94e911b0bab8db5cdb5efb8d4d8f2d4072610 (patch)
treea52a7a493076bba6e3ec5a7f9442bb3e77a5e16e /src/rms.cpp
parent29339928d7a05ca11786885643631206a978655e (diff)
Add code
Diffstat (limited to 'src/rms.cpp')
-rw-r--r--src/rms.cpp86
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;
+
}