metaforce/Runtime/Graphics/CLineRenderer.hpp

64 lines
1.6 KiB
C++
Raw Normal View History

2016-04-12 23:07:23 -07:00
#ifndef __URDE_CLINERENDERER_HPP__
#define __URDE_CLINERENDERER_HPP__
#include "RetroTypes.hpp"
2016-03-04 15:04:53 -08:00
#include "zeus/CVector3f.hpp"
#include "zeus/CColor.hpp"
#include "boo/graphicsdev/IGraphicsDataFactory.hpp"
2016-03-04 15:04:53 -08:00
namespace urde
{
class CLineRenderer
{
public:
enum class EPrimitiveMode
{
Lines,
LineStrip,
LineLoop
};
2016-02-17 23:56:14 -08:00
private:
EPrimitiveMode m_mode;
u32 m_maxVerts;
u32 m_nextVert = 0;
bool m_final = false;
bool m_textured;
2016-03-04 15:04:53 -08:00
zeus::CVector3f m_firstPos;
zeus::CVector3f m_secondPos;
zeus::CVector2f m_firstUV;
zeus::CColor m_firstColor;
float m_firstWidth;
2016-03-04 15:04:53 -08:00
zeus::CVector3f m_lastPos;
zeus::CVector3f m_lastPos2;
zeus::CVector2f m_lastUV;
zeus::CColor m_lastColor;
float m_lastWidth;
public:
boo::GraphicsDataToken m_gfxToken;
boo::IGraphicsBufferD* m_vertBuf;
boo::IGraphicsBufferD* m_uniformBuf;
boo::IShaderDataBinding* m_shaderBind = nullptr;
2017-04-21 23:42:32 -07:00
CLineRenderer(boo::IGraphicsDataFactory::Context& ctx,
EPrimitiveMode mode, u32 maxVerts, boo::ITexture* texture, bool additive);
CLineRenderer(EPrimitiveMode mode, u32 maxVerts, boo::ITexture* texture, bool additive);
2017-04-21 23:42:32 -07:00
CLineRenderer(CLineRenderer&&) = default;
void Reset();
2016-03-04 15:04:53 -08:00
void AddVertex(const zeus::CVector3f& position, const zeus::CColor& color, float width,
const zeus::CVector2f& uv=zeus::CVector2f::skZero);
void Render(const zeus::CColor& moduColor=zeus::CColor::skWhite);
static void Initialize();
static void Shutdown();
};
}
2016-04-12 23:07:23 -07:00
#endif // __URDE_CLINERENDERER_HPP__