Closed marcizhu closed 8 years ago
Good to know, I'll definitely look into this.
Thanks for that.
I've discovered that if you change the method Layer2D::OnRender()
from:
void Layer2D::OnRender()
{
m_Shader->Bind();
m_Renderer->Begin();
for (const Renderable2D* renderable : m_Renderables)
renderable->Submit(m_Renderer);
for (const Renderable2D* renderable : m_SubmittedRenderables)
renderable->Submit(m_Renderer);
m_Renderer->End();
m_Renderer->Present();
OnRender(*m_Renderer);
m_SubmittedRenderables.clear();
}
to:
void Layer2D::OnRender()
{
m_Shader->Bind();
for (const Renderable2D* renderable : m_Renderables){
m_Renderer->Begin();
renderable->Submit(m_Renderer);
m_Renderer->End();
m_Renderer->Present();
}
for (const Renderable2D* renderable : m_SubmittedRenderables) {
m_Renderer->Begin();
renderable->Submit(m_Renderer);
m_Renderer->End();
m_Renderer->Present();
}
OnRender(*m_Renderer);
m_SubmittedRenderables.clear();
}
It works, because is like rendering in different layers, so clearly the bug is inside BatchRenderer2D::End()
or inside BatchRenderer2D::Present()
I hope you find this useful :)
I just tried this in Sandbox (in TestLayer), and it seemed to work fine for me. Here's the code I used:
FontManager::Add(new Font("Consolas", "res/consola.ttf", 96));
FontManager::Add(new Font("Brush Script", "res/BrushScriptStd.otf", 96));
Add(new Label("Consolas", -15.5f, 0.0f, FontManager::Get("Consolas"), 0xffffffff));
Add(new Label("Brush Script", -15.5f, 2.0f, FontManager::Get("Brush Script"), 0xffffffff));
Are you sure you're on the latest version of Sparky? If you are, please send me a demo layer so I can investigate further.
I've just reviewed my code and I realized that I wasn't setting the uniform "textures", so that's why I was getting that bug...
I'm sorry, clearly there's no bug...
If I try to render 2 or more labels with different fonts in the same layer just one gets rendered properly, the other is full of random letters, like if the renderer was trying to render both with just one texture.
Again, it only happens if you want to render more than one label in the same layer and with different fonts, if you use the same fonts, all works fine.
That's all I know :)