/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ----------------------------------------------------------------------------- */ #ifndef __NRENDERER_TOOLBOX__ #define __NRENDERER_TOOLBOX__ #include "core/renderer.h" namespace GS { namespace RendererToolbox { using Core::Material; using Render::Renderer; /// Wrapper to display a cross in 3D. void DrawCross(Renderer &, const Vector4 &, float size = Units::Mtr(1), const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display an axis aligned square in 3D. void DrawSquare(Renderer &, const Vector4 &, float size = Units::Mtr(1), Material::BlendOperator = Material::Blend_None); /// Wrapper to display an OOBB using the line function of a derived renderer. void DrawOBB(Renderer &, const OBB &, const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display an OOBB using the triangle function of a derived renderer. void DrawFilledOBB(Renderer &, const OBB &, const Color *, Material::BlendOperator = Material::Blend_None, Material::RenderWord = Material::Render_None); /// Wrapper to display an AABB in 3D. void DrawAABB(Renderer &, const MinMax &, const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display a cube in 3D. void DrawCube(Renderer &, const Vector4 &, float size = Units::Mtr(1), const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display a sphere in 3D. void DrawSphere(Renderer &, const Vector4 &, float radius = Units::Mtr(1), const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display a ball in 3D. void DrawBall(Renderer &, const nMatrix4 &, float radius = Units::Mtr(1), Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display a circle in 3D. void DrawCircle(Renderer &, const Vector4 &, float radius = Units::Mtr(1), const Matrix3 * = 0, const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display a cylinder in 3D. void DrawCylinder(Renderer &, const Vector4 &, float radius = Units::Mtr(1), float length = Units::Mtr(1), const Matrix3 * = 0, const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display a capsule in 3D. void DrawCapsule(Renderer &, const Vector4 &, float radius = Units::Mtr(1.f), float length = Units::Mtr(1), const Matrix3 * = 0, const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to display a cone in 3D. void DrawCone(Renderer &, const Vector4 &, float radius = Units::Mtr(1.f), float length = Units::Mtr(1), const Matrix3 * = 0, const Color * = 0, Material::BlendOperator = Material::Blend_None); /// Wrapper to line 3D. void Line3D(Renderer &, const Vector4 &, const Vector4 &, const Color * = 0, Material::BlendOperator = Material::Blend_None, Material::RenderWord = Material::Render_None); /// Draw triangle. void Triangle3D(Renderer &, const Vector4 [3], const Color [3] = 0, const Vector2 [3] = 0, const Render::Texture * = 0, Material::BlendOperator = Material::Blend_None, Material::RenderWord = Material::Render_None); /// Return nearest but highest power of two from a given value. template T GetPow2(T v, bool no_shrink = false) { T h = 1; if (no_shrink) while (h < v) h *= 2; else while ((h + h / 2) < v) h *= 2; return h; } } // RendererToolbox } // GS #endif // __NRENDERER_TOOLBOX__