mirror of
https://github.com/blawar/GLideN64.git
synced 2024-06-25 22:09:35 +00:00
Add TextDrawer::setTextColor method.
This commit is contained in:
parent
08f2b8be31
commit
d89e48df46
|
@ -249,7 +249,7 @@ ShaderProgram * Context::createOrientationCorrectionShader()
|
|||
return m_impl->createOrientationCorrectionShader();
|
||||
}
|
||||
|
||||
ShaderProgram * Context::createTextDrawerShader()
|
||||
TextDrawerShaderProgram * Context::createTextDrawerShader()
|
||||
{
|
||||
return m_impl->createTextDrawerShader();
|
||||
}
|
||||
|
|
|
@ -220,7 +220,7 @@ namespace graphics {
|
|||
|
||||
ShaderProgram * createOrientationCorrectionShader();
|
||||
|
||||
ShaderProgram * createTextDrawerShader();
|
||||
TextDrawerShaderProgram * createTextDrawerShader();
|
||||
|
||||
void resetShaderProgram();
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace graphics {
|
|||
virtual ShaderProgram * createTexrectCopyShader() = 0;
|
||||
virtual ShaderProgram * createGammaCorrectionShader() = 0;
|
||||
virtual ShaderProgram * createOrientationCorrectionShader() = 0;
|
||||
virtual ShaderProgram * createTextDrawerShader() = 0;
|
||||
virtual TextDrawerShaderProgram * createTextDrawerShader() = 0;
|
||||
virtual void resetShaderProgram() = 0;
|
||||
virtual void drawTriangles(const Context::DrawTriangleParameters & _params) = 0;
|
||||
virtual void drawRects(const Context::DrawRectParameters & _params) = 0;
|
||||
|
|
|
@ -435,8 +435,8 @@ namespace glsl {
|
|||
|
||||
/*---------------SpecialShader-------------*/
|
||||
|
||||
template<class VertexBody, class FragmentBody>
|
||||
class SpecialShader : public graphics::ShaderProgram
|
||||
template<class VertexBody, class FragmentBody, class Base = graphics::ShaderProgram>
|
||||
class SpecialShader : public Base
|
||||
{
|
||||
public:
|
||||
SpecialShader(const opengl::GLInfo & _glinfo,
|
||||
|
@ -692,7 +692,7 @@ namespace glsl {
|
|||
|
||||
/*---------------TexrectDrawerShader-------------*/
|
||||
|
||||
typedef SpecialShader<VertexShaderTexturedRect, TextDraw> TextDrawerShaderBase;
|
||||
typedef SpecialShader<VertexShaderTexturedRect, TextDraw, graphics::TextDrawerShaderProgram> TextDrawerShaderBase;
|
||||
|
||||
class TextDrawerShader : public TextDrawerShaderBase
|
||||
{
|
||||
|
@ -707,10 +707,19 @@ namespace glsl {
|
|||
m_useProgram->useProgram(m_program);
|
||||
const int texLoc = glGetUniformLocation(GLuint(m_program), "uTex0");
|
||||
glUniform1i(texLoc, 0);
|
||||
const int colorLoc = glGetUniformLocation(GLuint(m_program), "uColor");
|
||||
glUniform4fv(colorLoc, 1, config.font.colorf);
|
||||
m_colorLoc = glGetUniformLocation(GLuint(m_program), "uColor");
|
||||
glUniform4fv(m_colorLoc, 1, config.font.colorf);
|
||||
m_useProgram->useProgram(graphics::ObjectHandle::null);
|
||||
}
|
||||
|
||||
void setTextColor(float * _color) override {
|
||||
m_useProgram->useProgram(m_program);
|
||||
glUniform4fv(m_colorLoc, 1, _color);
|
||||
m_useProgram->useProgram(graphics::ObjectHandle::null);
|
||||
}
|
||||
|
||||
private:
|
||||
int m_colorLoc;
|
||||
};
|
||||
|
||||
/*---------------SpecialShadersFactory-------------*/
|
||||
|
@ -766,7 +775,7 @@ namespace glsl {
|
|||
return new OrientationCorrectionShader(m_glinfo, m_useProgram, m_vertexHeader, m_fragmentHeader, m_fragmentEnd);
|
||||
}
|
||||
|
||||
graphics::ShaderProgram * SpecialShadersFactory::createTextDrawerShader() const
|
||||
graphics::TextDrawerShaderProgram * SpecialShadersFactory::createTextDrawerShader() const
|
||||
{
|
||||
return new TextDrawerShader(m_glinfo, m_useProgram, m_vertexHeader, m_fragmentHeader, m_fragmentEnd);
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace glsl {
|
|||
|
||||
graphics::ShaderProgram * createOrientationCorrectionShader() const;
|
||||
|
||||
graphics::ShaderProgram * createTextDrawerShader() const;
|
||||
graphics::TextDrawerShaderProgram * createTextDrawerShader() const;
|
||||
|
||||
private:
|
||||
const opengl::GLInfo & m_glinfo;
|
||||
|
|
|
@ -371,7 +371,7 @@ graphics::ShaderProgram * ContextImpl::createOrientationCorrectionShader()
|
|||
return m_specialShadersFactory->createOrientationCorrectionShader();
|
||||
}
|
||||
|
||||
graphics::ShaderProgram * ContextImpl::createTextDrawerShader()
|
||||
graphics::TextDrawerShaderProgram * ContextImpl::createTextDrawerShader()
|
||||
{
|
||||
return m_specialShadersFactory->createTextDrawerShader();
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ namespace opengl {
|
|||
|
||||
graphics::ShaderProgram * createOrientationCorrectionShader() override;
|
||||
|
||||
graphics::ShaderProgram * createTextDrawerShader() override;
|
||||
graphics::TextDrawerShaderProgram * createTextDrawerShader() override;
|
||||
|
||||
void resetShaderProgram() override;
|
||||
|
||||
|
|
|
@ -27,4 +27,9 @@ namespace graphics {
|
|||
virtual void setEnableAlphaTest(int _enable) = 0;
|
||||
};
|
||||
|
||||
class TextDrawerShaderProgram : public ShaderProgram
|
||||
{
|
||||
public:
|
||||
virtual void setTextColor(float * _color) = 0;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -371,3 +371,9 @@ void TextDrawer::getTextSize(const char *_pText, float & _w, float & _h) const
|
|||
_w += bw;
|
||||
_h += bh;
|
||||
}
|
||||
|
||||
void TextDrawer::setTextColor(float * _color)
|
||||
{
|
||||
if (m_program)
|
||||
m_program->setTextColor(_color);
|
||||
}
|
||||
|
|
|
@ -18,9 +18,11 @@ public:
|
|||
|
||||
void getTextSize(const char *_pText, float & _w, float & _h) const;
|
||||
|
||||
void setTextColor(float * _color);
|
||||
|
||||
private:
|
||||
std::unique_ptr<Atlas> m_atlas;
|
||||
std::unique_ptr<graphics::ShaderProgram> m_program;
|
||||
std::unique_ptr<graphics::TextDrawerShaderProgram> m_program;
|
||||
};
|
||||
|
||||
extern TextDrawer g_textDrawer;
|
||||
|
|
Loading…
Reference in New Issue
Block a user