From ca12e5a39a6121325602b0094ebf63895103502a Mon Sep 17 00:00:00 2001 From: leo Date: Sun, 31 Jul 2005 21:17:46 +0000 Subject: Functions to render debug primitives. git-svn-id: http://svn.leocad.org/trunk@416 c7d43263-9d01-0410-8a33-9dba5d9f93d6 --- common/debug.cpp | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ common/debug.h | 17 ++++++++++ 2 files changed, 117 insertions(+) create mode 100644 common/debug.cpp create mode 100644 common/debug.h (limited to 'common') diff --git a/common/debug.cpp b/common/debug.cpp new file mode 100644 index 0000000..437adbc --- /dev/null +++ b/common/debug.cpp @@ -0,0 +1,100 @@ +#include "opengl.h" +#include "debug.h" + +#ifdef LC_DEBUG + +#define LC_MAX_DEBUG_LINES 100 + +typedef struct +{ + Point3 pt1; + Point3 pt2; + Vector3 color; +} LC_DEBUG_LINE; + +static LC_DEBUG_LINE DebugLines[LC_MAX_DEBUG_LINES]; +static int NumDebugLines; + +void ClearDebugLines() +{ + NumDebugLines = 0; +} + +void AddDebugLine(const Point3& pt1, const Point3& pt2, const Vector3& Color) +{ + if (NumDebugLines == LC_MAX_DEBUG_LINES-1) + return; + + DebugLines[NumDebugLines].pt1 = pt1; + DebugLines[NumDebugLines].pt2 = pt2; + DebugLines[NumDebugLines].color = Color; + NumDebugLines++; +} + +#define LC_MAX_DEBUG_QUADS 100 + +typedef struct +{ + Point3 pt1; + Point3 pt2; + Point3 pt3; + Point3 pt4; + Vector4 color; +} LC_DEBUG_QUAD; + +static LC_DEBUG_QUAD DebugQuads[LC_MAX_DEBUG_QUADS]; +static int NumDebugQuads; + +void ClearDebugQuads() +{ + NumDebugQuads = 0; +} + +void AddDebugQuad(const Point3& pt1, const Point3& pt2, const Point3& pt3, const Point3& pt4, const Vector4& Color) +{ + if (NumDebugQuads == LC_MAX_DEBUG_QUADS-1) + return; + + DebugQuads[NumDebugQuads].pt1 = pt1; + DebugQuads[NumDebugQuads].pt2 = pt2; + DebugQuads[NumDebugQuads].pt3 = pt3; + DebugQuads[NumDebugQuads].pt4 = pt4; + DebugQuads[NumDebugQuads].color = Color; + NumDebugQuads++; +} + +void RenderDebugPrimitives() +{ + glBegin(GL_LINES); + + for (int i = 0; i < NumDebugLines; i++) + { + glColor3fv((float*)&DebugLines[i].color); + glVertex3fv((float*)&DebugLines[i].pt1); + glVertex3fv((float*)&DebugLines[i].pt2); + } + + glEnd(); + + glDepthMask(GL_FALSE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + + glBegin(GL_QUADS); + + for (i = 0; i < NumDebugQuads; i++) + { + glColor4fv((float*)&DebugQuads[i].color); + glVertex3fv((float*)&DebugQuads[i].pt1); + glVertex3fv((float*)&DebugQuads[i].pt2); + glVertex3fv((float*)&DebugQuads[i].pt3); + glVertex3fv((float*)&DebugQuads[i].pt4); + } + + glEnd(); + + glDisable(GL_BLEND); + glDepthMask(GL_TRUE); +} + +#endif // LC_DEBUG diff --git a/common/debug.h b/common/debug.h new file mode 100644 index 0000000..88554c9 --- /dev/null +++ b/common/debug.h @@ -0,0 +1,17 @@ +#ifndef _DEBUG_H_ +#define _DEBUG_H_ +#ifdef LC_DEBUG + +#include "algebra.h" + +void RenderDebugPrimitives(); + +void AddDebugLine(const Point3& pt1, const Point3& pt2, const Vector3& Color); +void ClearDebugLines(); + +void AddDebugQuad(const Point3& pt1, const Point3& pt2, const Point3& pt3, const Point3& pt4, const Vector4& Color); +void ClearDebugQuads(); + + +#endif // LC_DEBUG +#endif // _DEBUG_H_ -- cgit v1.2.3