23 static const float DU_PI = 3.14159265f;
40 virtual void texture(
bool state) = 0;
50 virtual void vertex(
const float* pos,
unsigned int color) = 0;
55 virtual void vertex(
const float x,
const float y,
const float z,
unsigned int color) = 0;
60 virtual void vertex(
const float* pos,
unsigned int color,
const float* uv) = 0;
65 virtual void vertex(
const float x,
const float y,
const float z,
unsigned int color,
const float u,
const float v) = 0;
68 virtual void end() = 0;
71 inline unsigned int duRGBA(
int r,
int g,
int b,
int a)
73 return ((
unsigned int)r) | ((
unsigned int)g << 8) | ((
unsigned int)b << 16) | ((
unsigned int)a << 24);
76 inline unsigned int duRGBAf(
float fr,
float fg,
float fb,
float fa)
78 unsigned char r = (
unsigned char)(fr*255.0f);
79 unsigned char g = (
unsigned char)(fg*255.0f);
80 unsigned char b = (
unsigned char)(fb*255.0f);
81 unsigned char a = (
unsigned char)(fa*255.0f);
88 inline unsigned int duMultCol(
const unsigned int col,
const unsigned int d)
90 const unsigned int r = col & 0xff;
91 const unsigned int g = (col >> 8) & 0xff;
92 const unsigned int b = (col >> 16) & 0xff;
93 const unsigned int a = (col >> 24) & 0xff;
94 return duRGBA((r*d) >> 8, (g*d) >> 8, (b*d) >> 8, a);
99 return ((col >> 1) & 0x007f7f7f) | (col & 0xff000000);
102 inline unsigned int duLerpCol(
unsigned int ca,
unsigned int cb,
unsigned int u)
104 const unsigned int ra = ca & 0xff;
105 const unsigned int ga = (ca >> 8) & 0xff;
106 const unsigned int ba = (ca >> 16) & 0xff;
107 const unsigned int aa = (ca >> 24) & 0xff;
108 const unsigned int rb = cb & 0xff;
109 const unsigned int gb = (cb >> 8) & 0xff;
110 const unsigned int bb = (cb >> 16) & 0xff;
111 const unsigned int ab = (cb >> 24) & 0xff;
113 unsigned int r = (ra*(255-u) + rb*u)/255;
114 unsigned int g = (ga*(255-u) + gb*u)/255;
115 unsigned int b = (ba*(255-u) + bb*u)/255;
116 unsigned int a = (aa*(255-u) + ab*u)/255;
120 inline unsigned int duTransCol(
unsigned int c,
unsigned int a)
122 return (a<<24) | (c & 0x00ffffff);
126 void duCalcBoxColors(
unsigned int* colors,
unsigned int colTop,
unsigned int colSide);
129 float maxx,
float maxy,
float maxz,
unsigned int col,
const float lineWidth);
132 float maxx,
float maxy,
float maxz,
unsigned int col,
const float lineWidth);
135 const float x1,
const float y1,
const float z1,
const float h,
136 const float as0,
const float as1,
unsigned int col,
const float lineWidth);
139 const float x1,
const float y1,
const float z1,
140 const float as0,
const float as1,
unsigned int col,
const float lineWidth);
143 const float r,
unsigned int col,
const float lineWidth);
146 const float size,
unsigned int col,
const float lineWidth);
149 float maxx,
float maxy,
float maxz,
const unsigned int* fcol);
152 float maxx,
float maxy,
float maxz,
unsigned int col);
155 const int w,
const int h,
const float size,
156 const unsigned int col,
const float lineWidth);
161 float maxx,
float maxy,
float maxz,
unsigned int col);
164 float maxx,
float maxy,
float maxz,
unsigned int col);
167 float maxx,
float maxy,
float maxz,
unsigned int col);
170 const float x1,
const float y1,
const float z1,
const float h,
171 const float as0,
const float as1,
unsigned int col);
174 const float x1,
const float y1,
const float z1,
175 const float as0,
const float as1,
unsigned int col);
178 const float r,
unsigned int col);
181 const float size,
unsigned int col);
184 float maxx,
float maxy,
float maxz,
const unsigned int* fcol);
187 float maxx,
float maxy,
float maxz,
unsigned int col);
193 unsigned int* m_color;
201 void resize(
int cap);
208 virtual void vertex(
const float x,
const float y,
const float z,
unsigned int color);
209 virtual void vertex(
const float* pos,
unsigned int color);
216 #endif // DEBUGDRAW_H virtual void texture(bool state)=0
void duDebugDrawCylinderWire(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col, const float lineWidth)
virtual void vertex(const float *pos, unsigned int color)=0
Submit a vertex.
void duDebugDrawCircle(struct duDebugDraw *dd, const float x, const float y, const float z, const float r, unsigned int col, const float lineWidth)
void duAppendCross(struct duDebugDraw *dd, const float x, const float y, const float z, const float size, unsigned int col)
virtual void depthMask(bool state)=0
void duAppendArc(struct duDebugDraw *dd, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const float h, const float as0, const float as1, unsigned int col)
void duCalcBoxColors(unsigned int *colors, unsigned int colTop, unsigned int colSide)
void duAppendBox(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, const unsigned int *fcol)
void duDebugDrawCylinder(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)
void duAppendCircle(struct duDebugDraw *dd, const float x, const float y, const float z, const float r, unsigned int col)
unsigned int duDarkenCol(unsigned int col)
unsigned int duIntToCol(int i, int a)
unsigned int duMultCol(const unsigned int col, const unsigned int d)
unsigned int duLerpCol(unsigned int ca, unsigned int cb, unsigned int u)
void duDebugDrawBoxWire(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col, const float lineWidth)
void duDebugDrawGridXZ(struct duDebugDraw *dd, const float ox, const float oy, const float oz, const int w, const int h, const float size, const unsigned int col, const float lineWidth)
void duDebugDrawArc(struct duDebugDraw *dd, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const float h, const float as0, const float as1, unsigned int col, const float lineWidth)
void duDebugDrawCross(struct duDebugDraw *dd, const float x, const float y, const float z, const float size, unsigned int col, const float lineWidth)
unsigned int duTransCol(unsigned int c, unsigned int a)
virtual void begin(duDebugDrawPrimitives prim, float size=1.0f)=0
Begin drawing primitives.
Abstract debug draw interface.
void duAppendCylinder(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)
unsigned int duRGBAf(float fr, float fg, float fb, float fa)
void duDebugDrawBox(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, const unsigned int *fcol)
void duAppendArrow(struct duDebugDraw *dd, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const float as0, const float as1, unsigned int col)
void duAppendBoxPoints(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)
unsigned int duRGBA(int r, int g, int b, int a)
virtual void end()=0
End drawing primitives.
void duAppendBoxWire(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)
void duDebugDrawArrow(struct duDebugDraw *dd, const float x0, const float y0, const float z0, const float x1, const float y1, const float z1, const float as0, const float as1, unsigned int col, const float lineWidth)
void duAppendCylinderWire(struct duDebugDraw *dd, float minx, float miny, float minz, float maxx, float maxy, float maxz, unsigned int col)