From 0db190f4530750233a76740cfc30e6719afa2712 Mon Sep 17 00:00:00 2001 From: outfrost Date: Sat, 27 Jun 2020 03:34:57 +0200 Subject: [PATCH] Create keybinds for scene and render debug functionalities --- src/engine/input.c | 24 +++++++++++++++++++++--- src/engine/render.c | 25 ++++++++++--------------- src/engine/render.h | 3 +++ 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/engine/input.c b/src/engine/input.c index 01d3c41..b843143 100644 --- a/src/engine/input.c +++ b/src/engine/input.c @@ -2,15 +2,33 @@ #include +#include "render.h" + static void (*keyboardInputCallback) (int, int, int, int); void onKeyboardEvent(GLFWwindow* window, int key, int scancode, int action, int mods) { - bool handled = false; + if (!(mods & GLFW_MOD_CONTROL)) { + if (keyboardInputCallback) { + keyboardInputCallback(key, scancode, action, mods); + } + return; + } - if (!handled && keyboardInputCallback) { - keyboardInputCallback(key, scancode, action, mods); + switch (key) { + case GLFW_KEY_1: + if (action == GLFW_PRESS) { + debugScene = !debugScene; + } + break; + case GLFW_KEY_2: + if (action == GLFW_PRESS) { + debugRender = !debugRender; + } + break; + default: + break; } } diff --git a/src/engine/render.c b/src/engine/render.c index d09a1a5..c3ddb3a 100644 --- a/src/engine/render.c +++ b/src/engine/render.c @@ -1,15 +1,12 @@ #include "render.h" -#include - #include "geometry.h" #include "performance.h" -#define SCENE_DEBUG_ 0 -#define RENDER_DEBUG_ 0 - float viewportAspectRatio = 1.0f; const Scene* cameraAnchor; +bool debugScene = false; +bool debugRender = false; static const float AXIS_RADIUS = 5.0f; @@ -69,9 +66,11 @@ static void renderScene(const Scene* scene, const Transform baseTransform) { glLoadTransposeMatrixf((const GLfloat*) &transform); glDisable(GL_LIGHTING); -#if SCENE_DEBUG_ - drawAxes(); -#endif // SCENE_DEBUG_ + + if (debugScene) { + drawAxes(); + } + glEnable(GL_LIGHTING); if (scene->solid) { @@ -128,11 +127,9 @@ static void drawAxes() { glEnd(); } -#if RENDER_DEBUG_ -static GLfloat ab(GLfloat a) { +static GLfloat absolute(GLfloat a) { return a < 0 ? -a : a; } -#endif // RENDER_DEBUG_ static void drawSolid(const Solid* solid) { if (solid == NULL) { @@ -150,8 +147,7 @@ static void drawSolid(const Solid* solid) { for (size_t faceIndex = 0; faceIndex < mesh.numFaces; ++faceIndex) { const Face face = mesh.faces[faceIndex]; -#if RENDER_DEBUG_ - if (face.normals) { + if (debugRender && face.normals) { glDisable(GL_LIGHTING); glDisable(GL_TEXTURE_2D); glBegin(GL_LINES); @@ -159,7 +155,7 @@ static void drawSolid(const Solid* solid) { size_t vertIndex = face.indices[i]; Vector3D vertex = mesh.vertices[vertIndex]; Vector3D normal = face.normals[i]; - glColor3f(ab(normal.x), ab(normal.y), ab(normal.z)); + glColor3f(absolute(normal.x), absolute(normal.y), absolute(normal.z)); glVertex3f(vertex.x, vertex.y, vertex.z); glVertex3f(vertex.x + normal.x, vertex.y + normal.y, vertex.z + normal.z); } @@ -167,7 +163,6 @@ static void drawSolid(const Solid* solid) { glEnable(GL_TEXTURE_2D); glEnable(GL_LIGHTING); } -#endif // RENDER_DEBUG_ GLenum faceMode; switch (face.numIndices) { diff --git a/src/engine/render.h b/src/engine/render.h index f3be0a2..f1b40a1 100644 --- a/src/engine/render.h +++ b/src/engine/render.h @@ -1,12 +1,15 @@ #ifndef ENGINE_RENDER_H_ #define ENGINE_RENDER_H_ +#include #include #include "scene.h" extern float viewportAspectRatio; extern const Scene* cameraAnchor; +extern bool debugScene; +extern bool debugRender; void initRender(); void renderFrame(GLFWwindow* window); -- 2.44.0