esp::gfx::DebugLineRender class

Singleton utility class for on-the-fly rendering of lines (e.g. every frame). This is intended for debugging or simple UX for prototype apps. The API prioritizes ease-of-use over maximum runtime performance.

It's easy to add new primitives here; see drawCircle as a reference. In addition, if you're interested to integrate Magnum's line-based primitives, see src/deps/magnum/doc/generated/primitives.cpp and also this discussion: https://github.com/facebookresearch/habitat-sim/pull/1349#discussion_r660092144

Constructors, destructors, conversion operators

DebugLineRender()
Constructor. This allocates GPU resources so it should persist frame-to-frame (don't recreate it every frame).
DebugLineRender(const DebugLineRender&) deleted
Copying is not allowed.

Public functions

void releaseGLResources()
Release GPU resources.
auto operator=(const DebugLineRender&) -> DebugLineRender& deleted
Copying is not allowed.
void setLineWidth(float lineWidth)
Set line width in pixels (approximate).
void drawLine(const Magnum::Vector3& from, const Magnum::Vector3& to, const Magnum::Color4& color)
Draw a line segment in world-space (ignores pushTransform).
void drawLine(const Magnum::Vector3& from, const Magnum::Vector3& to, const Magnum::Color4& fromColor, const Magnum::Color4& toColor)
Draw a line segment in world-space.
void flushLines(const Magnum::Matrix4& camMatrix, const Magnum::Matrix4& projMatrix, const Magnum::Vector2i& viewport)
Submit lines to the GL renderer. Call this once per frame. Because this uses transparency, you should ideally call this after submitting opaque scene geometry.
void flushLines(const Magnum::Matrix4& projCamMatrix, const Magnum::Vector2i& viewport)
void pushTransform(const Magnum::Matrix4& transform)
Push (multiply) a transform onto the transform stack, affecting all line-drawing until popped. Must be paired with popTransform(). For example, push an object's local-to-world transform and then use drawTransformedLine to draw lines in the object's local space.
void popTransform()
See also pushTransform.
void drawTransformedLine(const Magnum::Vector3& from, const Magnum::Vector3& to, const Magnum::Color4& color)
Draw a line segment in world-space or local-space (see pushTransform).
void drawTransformedLine(const Magnum::Vector3& from, const Magnum::Vector3& to, const Magnum::Color4& fromColor, const Magnum::Color4& toColor)
Draw a line segment in world-space or local-space (see pushTransform).
void drawBox(const Magnum::Vector3& min, const Magnum::Vector3& max, const Magnum::Color4& color)
Draw a box in world-space or local-space (see pushTransform).
void drawCircle(const Magnum::Vector3& pos, float radius, const Magnum::Color4& color, int numSegments = 24, const Magnum::Vector3& normal = Magnum::Vector3(0.0, 1.0, 0.0))
Draw a circle in world-space or local-space (see pushTransform). The circle is an approximation; see numSegments.
void drawPathWithEndpointCircles(const std::vector<Magnum::Vector3>& points, float radius, const Magnum::Color4& color, int numSegments = 24, const Magnum::Vector3& normal = Magnum::Vector3(0.0, 1.0, 0.0))
Draw a sequence of line segments with circles at the two endpoints. In world-space or local-space (see pushTransform).
void drawPathWithEndpointCircles(Magnum::Containers::ArrayView<const Magnum::Vector3> points, float radius, const Magnum::Color4& color, int numSegments = 24, const Magnum::Vector3& normal = Magnum::Vector3(0.0, 1.0, 0.0))
Draw a sequence of line segments with circles at the two endpoints. In world-space or local-space (see pushTransform).

Function documentation

void esp::gfx::DebugLineRender::drawPathWithEndpointCircles(Magnum::Containers::ArrayView<const Magnum::Vector3> points, float radius, const Magnum::Color4& color, int numSegments = 24, const Magnum::Vector3& normal = Magnum::Vector3(0.0, 1.0, 0.0))

Draw a sequence of line segments with circles at the two endpoints. In world-space or local-space (see pushTransform).

Parameters
points Note that std::vector, std::array, or c-style array can be passed here.
radius
color
numSegments
normal