Browse Source

rendering tests, disabled vsync

Kajetan Johannes Hammerle 3 years ago
parent
commit
f508ad2593
5 changed files with 37 additions and 16 deletions
  1. 15 1
      Game.cpp
  2. 8 14
      Main.cpp
  3. 2 1
      rendering/wrapper/Window.cpp
  4. 11 0
      utils/String.cpp
  5. 1 0
      utils/String.h

+ 15 - 1
Game.cpp

@@ -1,15 +1,29 @@
 #include "Game.h"
 #include "rendering/Renderer.h"
+#include "rendering/wrapper/GLFWWrapper.h"
+#include "utils/String.h"
 
 Game::Game(const Controller& c, const Clock& fps, const Clock& tps) : controller(c), fps(fps), tps(tps) {
 }
 
+float w = 0;
+
 void Game::tick() {
+    w += 5;
 }
 
 void Game::render(float lag, Renderer& renderer) const {
+    renderer.translateTo(0.0f, 0.0f).scale(2.0f).translate(100.0f, 240.0f).rotate(w + 5 * lag).translate(-100.0f, -240.0f).update();
+    u64 time = GLFWWrapper::getTimeNanos();
+    for(uint i = 0; i < 60; i++) {
+        renderer.drawString(0, i * 10, "Das is&037t ein Test. Das is&077t ein Test. Das is&737t ein Test.");
+    }
+    time = GLFWWrapper::getTimeNanos() - time;
+    
     renderer.translateTo(0.0f, 0.0f).scale(2.0f).update();
-    renderer.drawString(0, 0, "Das is&037t ein Test.");
+    String s;
+    s.append((int) time).append("  ").append(fps.getUpdatesPerSecond());
+    renderer.drawString(100, 10, s);
     (void) lag;
 }
 

+ 8 - 14
Main.cpp

@@ -35,13 +35,6 @@ void initCallbacks(Window& w, WindowSize& size, Controller& controller) {
         } else if(action == GLFW_RELEASE) {
             cControl.keys.release(key);
         }
-    });
-    w.setMouseButtonCallback([](GLFWwindow*, int button, int action, int) {
-        if(action == GLFW_PRESS) {
-            cControl.buttons.press(button);
-        } else if(action == GLFW_RELEASE) {
-            cControl.buttons.release(button);
-        }
     });*/
 }
 
@@ -76,6 +69,14 @@ int main() {
     u64 lag = 0;
     while(!window.shouldClose() && game.isRunning()) {
         GLWrapper::checkAndPrintError("GL-Error");
+
+        lag += fps.update();
+        while(lag >= nanosPerTick) {
+            lag -= nanosPerTick;
+            tps.update();
+            controller.tick();
+            game.tick();
+        }
         
         Matrix view;
         view.translate(-1.0f, 1.0f);
@@ -85,13 +86,6 @@ int main() {
         game.render((float) lag / nanosPerTick, renderer);
         window.swapBuffers();
         
-        lag += fps.update();
-        while(lag >= nanosPerTick) {
-            lag -= nanosPerTick;
-            tps.update();
-            controller.tick();
-            game.tick();
-        }
         glfwPollEvents();
     }
     

+ 2 - 1
rendering/wrapper/Window.cpp

@@ -7,6 +7,7 @@ Window::Window(const WindowSize& size, const char* windowName) : window(nullptr)
     glfwWindowHint(GLFW_VISIBLE, 0);
     glfwWindowHint(GLFW_RESIZABLE, 1);
     glfwWindowHint(GLFW_DECORATED, 0);
+    glfwWindowHint(GLFW_DOUBLEBUFFER, 1);
     
     glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
     glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
@@ -19,7 +20,7 @@ Window::Window(const WindowSize& size, const char* windowName) : window(nullptr)
     }
     glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
     glfwMakeContextCurrent(window);
-    glfwSwapInterval(1);
+    glfwSwapInterval(0);
 
     glfwSetWindowUserPointer(window, this);
 }

+ 11 - 0
utils/String.cpp

@@ -59,4 +59,15 @@ String& String::append(int i) {
         length = MAX_LENGTH;
     }
     return *this;
+}
+
+String& String::append(float f) {
+    uint left = MAX_LENGTH - length;
+    uint written = snprintf(data + length, left, "%.2f", f);
+    if(written < left) {
+        length += written;
+    } else {
+        length = MAX_LENGTH;
+    }
+    return *this;
 }

+ 1 - 0
utils/String.h

@@ -17,6 +17,7 @@ public:
     String& append(char c);
     String& append(const char* str);
     String& append(int i);
+    String& append(float f);
 
 private:
     static constexpr uint MAX_LENGTH = 255;