#include <stdbool.h>
+#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;
}
}
#include "render.h"
-#include <stdbool.h>
-
#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;
glLoadTransposeMatrixf((const GLfloat*) &transform);
glDisable(GL_LIGHTING);
-#if SCENE_DEBUG_
- drawAxes();
-#endif // SCENE_DEBUG_
+
+ if (debugScene) {
+ drawAxes();
+ }
+
glEnable(GL_LIGHTING);
if (scene->solid) {
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) {
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);
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);
}
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
}
-#endif // RENDER_DEBUG_
GLenum faceMode;
switch (face.numIndices) {
#ifndef ENGINE_RENDER_H_
#define ENGINE_RENDER_H_
+#include <stdbool.h>
#include <GLFW/glfw3.h>
#include "scene.h"
extern float viewportAspectRatio;
extern const Scene* cameraAnchor;
+extern bool debugScene;
+extern bool debugRender;
void initRender();
void renderFrame(GLFWwindow* window);