1
0
forked from 0ad/0ad

Moves TextRenderer shader to a more relevant place, into the rendering function argument.

This was SVN commit r25606.
This commit is contained in:
Vladislav Belov 2021-05-30 18:28:06 +00:00
parent 7f6ef5db79
commit 7f16a5c40c
9 changed files with 23 additions and 27 deletions

View File

@ -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]);
}

View File

@ -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;

View File

@ -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"

View File

@ -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);

View File

@ -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);

View File

@ -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();

View File

@ -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();
}

View File

@ -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);

View File

@ -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();
}