Add FPS counter

This commit is contained in:
Dimitri Lozeve 2021-02-25 20:07:23 +01:00
parent 03d1a2c9f4
commit 685e2e62ce

View file

@ -56,7 +56,8 @@ int main(int argc, char *argv[]) {
glUseProgram(buffer_shader); glUseProgram(buffer_shader);
glUniform1i(glGetUniformLocation(buffer_shader, "u_texture"), 0); glUniform1i(glGetUniformLocation(buffer_shader, "u_texture"), 0);
if (initialize_framebuffer(&framebuffer, &texture_color_buffer, WINDOW_WIDTH, WINDOW_HEIGHT)) { if (initialize_framebuffer(&framebuffer, &texture_color_buffer,
WINDOW_WIDTH, WINDOW_HEIGHT)) {
glfwDestroyWindow(window); glfwDestroyWindow(window);
glfwTerminate(); glfwTerminate();
return EXIT_FAILURE; return EXIT_FAILURE;
@ -64,21 +65,27 @@ int main(int argc, char *argv[]) {
} }
/* Drawing loop */ /* Drawing loop */
size_t frame = 0; size_t frame_count = 0;
size_t prev_frame_count = 0;
double time = 0;
double prev_time = 0;
while (!glfwWindowShouldClose(window)) { while (!glfwWindowShouldClose(window)) {
process_input(window, &screen_shader, screen_shader_file, &buffer_shader, process_input(window, &screen_shader, screen_shader_file, &buffer_shader,
buffer_shader_file); buffer_shader_file);
/* data required for uniforms */ /* data required for uniforms */
float time = glfwGetTime(); time = glfwGetTime();
int viewport[4] = {0}; int viewport[4] = {0};
glGetIntegerv(GL_VIEWPORT, viewport); glGetIntegerv(GL_VIEWPORT, viewport);
double mouse_x = 0, mouse_y = 0; double mouse_x = 0, mouse_y = 0;
glfwGetCursorPos(window, &mouse_x, &mouse_y); glfwGetCursorPos(window, &mouse_x, &mouse_y);
if (frame % 100 == 0) { if (time - prev_time >= 1.0) {
log_debug("frame = %zu, time = %f, viewport = (%d, %d)", frame, time, double fps = (frame_count - prev_frame_count) / (time - prev_time);
viewport[2], viewport[3]); log_debug("frame = %zu, time = %.2f, fps = %.2f, viewport = (%d, %d)", frame_count,
time, fps, viewport[2], viewport[3]);
prev_frame_count = frame_count;
prev_time = time;
} }
if (buffer_shader_file) { if (buffer_shader_file) {
@ -91,7 +98,7 @@ int main(int argc, char *argv[]) {
/* Setup uniforms */ /* Setup uniforms */
glUseProgram(buffer_shader); glUseProgram(buffer_shader);
glUniform1ui(glGetUniformLocation(buffer_shader, "u_frame"), frame); glUniform1ui(glGetUniformLocation(buffer_shader, "u_frame"), frame_count);
glUniform1f(glGetUniformLocation(buffer_shader, "u_time"), time); glUniform1f(glGetUniformLocation(buffer_shader, "u_time"), time);
glUniform2f(glGetUniformLocation(buffer_shader, "u_resolution"), glUniform2f(glGetUniformLocation(buffer_shader, "u_resolution"),
viewport[2], viewport[3]); viewport[2], viewport[3]);
@ -113,7 +120,7 @@ int main(int argc, char *argv[]) {
/* Setup uniforms */ /* Setup uniforms */
glUseProgram(screen_shader); glUseProgram(screen_shader);
glUniform1ui(glGetUniformLocation(screen_shader, "u_frame"), frame); glUniform1ui(glGetUniformLocation(screen_shader, "u_frame"), frame_count);
glUniform1f(glGetUniformLocation(screen_shader, "u_time"), time); glUniform1f(glGetUniformLocation(screen_shader, "u_time"), time);
glUniform2f(glGetUniformLocation(screen_shader, "u_resolution"), glUniform2f(glGetUniformLocation(screen_shader, "u_resolution"),
viewport[2], viewport[3]); viewport[2], viewport[3]);
@ -128,7 +135,7 @@ int main(int argc, char *argv[]) {
glfwSwapBuffers(window); glfwSwapBuffers(window);
glfwPollEvents(); glfwPollEvents();
frame++; frame_count++;
} }
glfwDestroyWindow(window); glfwDestroyWindow(window);