make font atlas generator interface more uniform and implement bitmap font atlas rendering and generation
This commit is contained in:
@@ -26,8 +26,8 @@ namespace OpenVulkano::Scene
|
||||
static Shader sdfDefaultShader;
|
||||
if (once)
|
||||
{
|
||||
sdfDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::VERTEX, "Shader/text");
|
||||
sdfDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::FRAGMENT, "Shader/text");
|
||||
sdfDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::VERTEX, "Shader/sdfText");
|
||||
sdfDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::FRAGMENT, "Shader/sdfText");
|
||||
sdfDefaultShader.AddVertexInputDescription(OpenVulkano::Vertex::GetVertexInputDescription());
|
||||
sdfDefaultShader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING);
|
||||
DescriptorSetLayoutBinding desc = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
@@ -46,7 +46,7 @@ namespace OpenVulkano::Scene
|
||||
static Shader msdfDefaultShader;
|
||||
if (once)
|
||||
{
|
||||
msdfDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::VERTEX, "Shader/text");
|
||||
msdfDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::VERTEX, "Shader/sdfText");
|
||||
msdfDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::FRAGMENT, "Shader/msdfText");
|
||||
msdfDefaultShader.AddVertexInputDescription(OpenVulkano::Vertex::GetVertexInputDescription());
|
||||
msdfDefaultShader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING);
|
||||
@@ -60,6 +60,26 @@ namespace OpenVulkano::Scene
|
||||
return msdfDefaultShader;
|
||||
}
|
||||
|
||||
Shader& TextDrawable::GetBitmapDefaultShader()
|
||||
{
|
||||
static bool once = true;
|
||||
static Shader bitmapDefaultShader;
|
||||
if (once)
|
||||
{
|
||||
bitmapDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::VERTEX, "Shader/text");
|
||||
bitmapDefaultShader.AddShaderProgram(OpenVulkano::ShaderProgramType::FRAGMENT, "Shader/text");
|
||||
bitmapDefaultShader.AddVertexInputDescription(OpenVulkano::Vertex::GetVertexInputDescription());
|
||||
bitmapDefaultShader.AddDescriptorSetLayoutBinding(Texture::DESCRIPTOR_SET_LAYOUT_BINDING);
|
||||
DescriptorSetLayoutBinding desc = UniformBuffer::DESCRIPTOR_SET_LAYOUT_BINDING;
|
||||
desc.stageFlags = ShaderProgramType::FRAGMENT;
|
||||
bitmapDefaultShader.AddDescriptorSetLayoutBinding(desc);
|
||||
bitmapDefaultShader.alphaBlend = true;
|
||||
bitmapDefaultShader.cullMode = CullMode::NONE;
|
||||
once = false;
|
||||
}
|
||||
return bitmapDefaultShader;
|
||||
}
|
||||
|
||||
TextDrawable::TextDrawable(const TextConfig& config)
|
||||
{
|
||||
m_cfg = config;
|
||||
@@ -248,6 +268,10 @@ namespace OpenVulkano::Scene
|
||||
++i;
|
||||
}
|
||||
m_bbox.Init(bmin, bmax);
|
||||
if (m_atlasData->meta.atlasType == FontAtlasType::BITMAP)
|
||||
{
|
||||
m_material.texture->m_samplerConfig = &SamplerConfig::NEAREST;
|
||||
}
|
||||
SimpleDrawable::Init(m_shader, &m_geometry, &m_material, &m_uniBuffer);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user