Moves TextRenderer shader to a more relevant place, into the rendering function argument.
This was SVN commit r25606.
This commit is contained in:
parent
7f6ef5db79
commit
7f16a5c40c
@ -30,8 +30,7 @@
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
CTextRenderer::CTextRenderer(const CShaderProgramPtr& shader) :
|
||||
m_Shader(shader)
|
||||
CTextRenderer::CTextRenderer()
|
||||
{
|
||||
ResetTransform();
|
||||
Color(CColor(1.0f, 1.0f, 1.0f, 1.0f));
|
||||
@ -223,7 +222,7 @@ struct SBatchCompare
|
||||
}
|
||||
};
|
||||
|
||||
void CTextRenderer::Render()
|
||||
void CTextRenderer::Render(const CShaderProgramPtr& shader)
|
||||
{
|
||||
std::vector<u16> indexes;
|
||||
std::vector<t2f_v2i> vertexes;
|
||||
@ -255,19 +254,19 @@ void CTextRenderer::Render()
|
||||
if (lastTexture != batch.font->GetTexture().get())
|
||||
{
|
||||
lastTexture = batch.font->GetTexture().get();
|
||||
m_Shader->BindTexture(str_tex, batch.font->GetTexture());
|
||||
shader->BindTexture(str_tex, batch.font->GetTexture());
|
||||
}
|
||||
|
||||
m_Shader->Uniform(str_transform, batch.transform);
|
||||
shader->Uniform(str_transform, batch.transform);
|
||||
|
||||
// ALPHA-only textures will have .rgb sampled as 0, so we need to
|
||||
// replace it with white (but not affect RGBA textures)
|
||||
if (batch.font->HasRGB())
|
||||
m_Shader->Uniform(str_colorAdd, CColor(0.0f, 0.0f, 0.0f, 0.0f));
|
||||
shader->Uniform(str_colorAdd, CColor(0.0f, 0.0f, 0.0f, 0.0f));
|
||||
else
|
||||
m_Shader->Uniform(str_colorAdd, CColor(1.0f, 1.0f, 1.0f, 0.0f));
|
||||
shader->Uniform(str_colorAdd, CColor(1.0f, 1.0f, 1.0f, 0.0f));
|
||||
|
||||
m_Shader->Uniform(str_colorMul, batch.color);
|
||||
shader->Uniform(str_colorMul, batch.color);
|
||||
|
||||
vertexes.resize(batch.chars*4);
|
||||
indexes.resize(batch.chars*6);
|
||||
@ -321,8 +320,8 @@ void CTextRenderer::Render()
|
||||
}
|
||||
}
|
||||
|
||||
m_Shader->VertexPointer(2, GL_SHORT, sizeof(t2f_v2i), &vertexes[0].x);
|
||||
m_Shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(t2f_v2i), &vertexes[0].u);
|
||||
shader->VertexPointer(2, GL_SHORT, sizeof(t2f_v2i), &vertexes[0].x);
|
||||
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(t2f_v2i), &vertexes[0].u);
|
||||
|
||||
glDrawElements(GL_TRIANGLES, indexes.size(), GL_UNSIGNED_SHORT, &indexes[0]);
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ class CFont;
|
||||
class CTextRenderer
|
||||
{
|
||||
public:
|
||||
CTextRenderer(const CShaderProgramPtr& shader);
|
||||
CTextRenderer();
|
||||
|
||||
/**
|
||||
* Reset the text transform to the default, with (0,0) in the top-left of the screen.
|
||||
@ -109,7 +109,7 @@ public:
|
||||
/**
|
||||
* Render all of the previously printed text calls.
|
||||
*/
|
||||
void Render();
|
||||
void Render(const CShaderProgramPtr& shader);
|
||||
|
||||
private:
|
||||
friend struct SBatchCompare;
|
||||
|
@ -43,7 +43,6 @@
|
||||
#include "ps/Profile.h"
|
||||
#include "ps/Pyrogenesis.h"
|
||||
#include "ps/XML/Xeromyces.h"
|
||||
#include "renderer/Renderer.h"
|
||||
#include "scriptinterface/ScriptContext.h"
|
||||
#include "scriptinterface/ScriptInterface.h"
|
||||
|
||||
|
@ -451,7 +451,7 @@ void CGUIText::Draw(CGUI& pGUI, CCanvas2D& canvas, const CGUIColor& DefaultColor
|
||||
std::floor(clipping.GetHeight() * g_GuiScale));
|
||||
}
|
||||
|
||||
CTextRenderer textRenderer(tech->GetShader());
|
||||
CTextRenderer textRenderer;
|
||||
textRenderer.SetClippingRect(clipping);
|
||||
textRenderer.Translate(0.0f, 0.0f, 0.0f);
|
||||
|
||||
@ -466,7 +466,7 @@ void CGUIText::Draw(CGUI& pGUI, CCanvas2D& canvas, const CGUIColor& DefaultColor
|
||||
textRenderer.Put(floorf(pos.X + tc.m_Pos.X), floorf(pos.Y + tc.m_Pos.Y), &tc.m_String);
|
||||
}
|
||||
|
||||
textRenderer.Render();
|
||||
textRenderer.Render(tech->GetShader());
|
||||
|
||||
for (const SSpriteCall& sc : m_SpriteCalls)
|
||||
pGUI.DrawSprite(sc.m_Sprite, canvas, sc.m_Area + pos);
|
||||
|
@ -1266,7 +1266,7 @@ void CInput::Draw(CCanvas2D& canvas)
|
||||
|
||||
CShaderTechniquePtr tech = g_Renderer.GetShaderManager().LoadEffect(str_gui_text);
|
||||
|
||||
CTextRenderer textRenderer(tech->GetShader());
|
||||
CTextRenderer textRenderer;
|
||||
textRenderer.Font(font_name);
|
||||
|
||||
// Set the Z to somewhat more, so we can draw a selected area between the
|
||||
@ -1517,7 +1517,7 @@ void CInput::Draw(CCanvas2D& canvas)
|
||||
textRenderer.Translate(0.f, ls, 0.f);
|
||||
}
|
||||
|
||||
textRenderer.Render();
|
||||
textRenderer.Render(tech->GetShader());
|
||||
|
||||
if (cliparea != CRect())
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
|
@ -193,7 +193,7 @@ void CConsole::Render()
|
||||
|
||||
CShaderTechniquePtr textTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_text);
|
||||
textTech->BeginPass();
|
||||
CTextRenderer textRenderer(textTech->GetShader());
|
||||
CTextRenderer textRenderer;
|
||||
textRenderer.Font(CStrIntern(CONSOLE_FONT));
|
||||
// animation: slide in from top of screen
|
||||
CMatrix3D transform = GetDefaultGuiMatrix();
|
||||
@ -204,7 +204,7 @@ void CConsole::Render()
|
||||
DrawHistory(textRenderer);
|
||||
DrawBuffer(textRenderer);
|
||||
|
||||
textRenderer.Render();
|
||||
textRenderer.Render(textTech->GetShader());
|
||||
|
||||
textTech->EndPass();
|
||||
|
||||
|
@ -215,7 +215,7 @@ void CLogger::Render()
|
||||
CShaderTechniquePtr textTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_text);
|
||||
textTech->BeginPass();
|
||||
|
||||
CTextRenderer textRenderer(textTech->GetShader());
|
||||
CTextRenderer textRenderer;
|
||||
textRenderer.Font(font_name);
|
||||
textRenderer.Color(1.0f, 1.0f, 1.0f);
|
||||
|
||||
@ -257,7 +257,7 @@ void CLogger::Render()
|
||||
textRenderer.Translate(0.0f, (float)lineSpacing, 0.0f);
|
||||
}
|
||||
|
||||
textRenderer.Render();
|
||||
textRenderer.Render(textTech->GetShader());
|
||||
|
||||
textTech->EndPass();
|
||||
}
|
||||
|
@ -201,12 +201,10 @@ void CProfileViewer::RenderProfile()
|
||||
CShaderTechniquePtr textTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_text);
|
||||
textTech->BeginPass();
|
||||
|
||||
CTextRenderer textRenderer(textTech->GetShader());
|
||||
CTextRenderer textRenderer;
|
||||
textRenderer.Font(font_name);
|
||||
textRenderer.Color(1.0f, 1.0f, 1.0f);
|
||||
|
||||
textRenderer.PrintfAt(2.0f, lineSpacing, L"%hs", table->GetTitle().c_str());
|
||||
|
||||
textRenderer.Translate(22.0f, lineSpacing*2.0f, 0.0f);
|
||||
|
||||
float colX = 0.0f;
|
||||
@ -269,7 +267,7 @@ void CProfileViewer::RenderProfile()
|
||||
textRenderer.Put(0.0f, 0.0f, L"back to parent");
|
||||
}
|
||||
|
||||
textRenderer.Render();
|
||||
textRenderer.Render(textTech->GetShader());
|
||||
textTech->EndPass();
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
|
@ -616,7 +616,7 @@ void TerrainRenderer::RenderPriorities(int cullGroup)
|
||||
|
||||
CShaderTechniquePtr tech = g_Renderer.GetShaderManager().LoadEffect(str_gui_text);
|
||||
tech->BeginPass();
|
||||
CTextRenderer textRenderer(tech->GetShader());
|
||||
CTextRenderer textRenderer;
|
||||
|
||||
textRenderer.Font(CStrIntern("mono-stroke-10"));
|
||||
textRenderer.Color(1.0f, 1.0f, 0.0f);
|
||||
@ -625,6 +625,6 @@ void TerrainRenderer::RenderPriorities(int cullGroup)
|
||||
for (size_t i = 0; i < visiblePatches.size(); ++i)
|
||||
visiblePatches[i]->RenderPriorities(textRenderer);
|
||||
|
||||
textRenderer.Render();
|
||||
textRenderer.Render(tech->GetShader());
|
||||
tech->EndPass();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user