diff --git a/src/main.c b/src/main.c index c439faf..26bf40a 100644 --- a/src/main.c +++ b/src/main.c @@ -2,11 +2,15 @@ #include #include #include +#include +#include #include "shader.h" #include "log.h" #include "src/shader.h" +#define STATUS_INTERVAL 0.5 + GLuint program; GLuint vertexArrayObject; @@ -14,6 +18,27 @@ GLuint vertexArrayObject; GLuint initialWindowWidth = 800; GLuint initialWindowHeight = 600; +int frameCount = 0; +struct timespec last_time, current_time; + +void initialiseStatusDisplay() { + clock_gettime(CLOCK_MONOTONIC, &last_time); +} + +void updateStatusDisplay() { + frameCount++; + clock_gettime(CLOCK_MONOTONIC, ¤t_time); + double elapsed = (current_time.tv_sec - last_time.tv_sec) + + (current_time.tv_nsec - last_time.tv_nsec) / 1e9; + if (elapsed >= STATUS_INTERVAL) { + double fps = frameCount / elapsed; + frameCount = 0; + last_time = current_time; + printf("\rFPS: %.2f ", fps); + fflush(stdout); + } +} + void init(void) { INFO("Compiling Shaders..."); @@ -55,12 +80,14 @@ void init(void) { 0.5f, -0.5f, 1.0f, 1.0f, 0.0f }; + DEBUG("Creating vertext buffer"); GLuint vertexBuffer; glGenBuffers(1, &vertexBuffer); glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); glBufferData(GL_ARRAY_BUFFER, sizeof(triangleVertices), triangleVertices, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); + DEBUG("Creating vertex array object"); // create vertex array object glGenVertexArrays(1, &vertexArrayObject); glBindVertexArray(vertexArrayObject); @@ -86,9 +113,14 @@ void init(void) { glClearColor(0.1f, 0.1f, 0.1f, 1.0f); glViewport(0, 0, initialWindowWidth, initialWindowHeight); + + initialiseStatusDisplay(); + + INFO("--- Initialisation done ---"); } void draw(void) { + updateStatusDisplay(); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(program);