Create keybinds for scene and render debug functionalities
parent
71828d0b25
commit
0db190f453
|
@ -2,15 +2,33 @@
|
|||
|
||||
#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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
#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;
|
||||
|
||||
|
@ -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) {
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
#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);
|
||||
|
|
Loading…
Reference in New Issue