1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-11-08 03:42:35 +01:00
openrw/rwengine/include/render/TextRenderer.hpp
Daniel Evans 9eb4c62a04 Improve HUD and UI rendering
+ Add names for some styles to reduce confusion
+ Move some HUD drawing into a seperate file
2015-02-15 12:41:51 +00:00

62 lines
1.2 KiB
C++

#pragma once
#include <engine/GameData.hpp>
#include "OpenGLRenderer.hpp"
#define GAME_FONTS 3
class GameWorld;
class GameRenderer;
/**
* @brief Handles rendering of bitmap font textures.
*
* In future, strings textures might be cached to improve performance, but
* for now, we just render each glyph on it's own quad
*/
class TextRenderer
{
public:
/**
* @todo Can this be merged with the gamestate text entries?
*/
struct TextInfo
{
enum TextAlignemnt
{
Left = 0,
Right = 1,
Center = 2
};
/// Font index @see TextRenderer::setFontTexture
int font;
/// Message to be displayed (including markup)
std::string text;
/// On screen position
glm::vec2 screenPosition;
/// font size
float size;
/// Base colour
glm::vec3 baseColour;
/// Horizontal Alignment
TextAlignemnt align;
TextInfo();
};
TextRenderer(GameWorld* engine, GameRenderer* renderer);
~TextRenderer();
void setFontTexture( int index, const std::string& font );
void renderText( const TextInfo& ti );
private:
std::string fonts[GAME_FONTS];
GameWorld* engine;
GameRenderer* renderer;
Renderer::ShaderProgram* textShader;
GeometryBuffer gb;
DrawBuffer db;
};