optimized TextRender
This commit is contained in:
parent
0f963fb74b
commit
1ab3e5241f
@ -1,7 +1,6 @@
|
||||
#include<hgl/type/StringList.h>
|
||||
#include<hgl/graph/font/TextRender.h>
|
||||
#include"VulkanAppFramework.h"
|
||||
#include<hgl/math/Math.h>
|
||||
|
||||
using namespace hgl;
|
||||
using namespace hgl::graph;
|
||||
@ -54,13 +53,19 @@ private:
|
||||
{
|
||||
UTF16String str;
|
||||
|
||||
FontSource *fs=CreateFontSource(OS_TEXT("微软雅黑"),12);
|
||||
|
||||
text_render=CreateTextRender(device,fs,device_render_pass,ubo_camera_info);
|
||||
if(!text_render)
|
||||
return(false);
|
||||
|
||||
LoadStringFromTextFile(str,OS_TEXT("res/text/DaoDeBible.txt"));
|
||||
|
||||
text_render_obj=text_render->CreateRenderable();
|
||||
text_render_obj=text_render->CreateRenderable(str);
|
||||
if(!text_render_obj)
|
||||
return(false);
|
||||
|
||||
render_instance=text_render->CreateRenderableInstance(text_render_obj,str);
|
||||
render_instance=text_render->CreateRenderableInstance(text_render_obj);
|
||||
if(!render_instance)
|
||||
return(false);
|
||||
|
||||
@ -77,12 +82,6 @@ public:
|
||||
if(!InitUBO())
|
||||
return(false);
|
||||
|
||||
FontSource *fs=CreateFontSource(OS_TEXT("微软雅黑"),12);
|
||||
|
||||
text_render=CreateTextRender(device,fs,device_render_pass,ubo_camera_info);
|
||||
if(!text_render)
|
||||
return(false);
|
||||
|
||||
if(!InitTextRenderable())
|
||||
return(false);
|
||||
|
||||
|
@ -15,23 +15,23 @@ namespace hgl
|
||||
|
||||
class TextRender
|
||||
{
|
||||
GPUDevice * device =nullptr;
|
||||
RenderResource * db =nullptr;
|
||||
GPUDevice * device;
|
||||
RenderResource * db;
|
||||
|
||||
Material * material =nullptr;
|
||||
MaterialInstance * material_instance =nullptr;
|
||||
Material * material;
|
||||
MaterialInstance * material_instance;
|
||||
|
||||
Sampler * sampler =nullptr;
|
||||
Sampler * sampler;
|
||||
|
||||
Pipeline * pipeline =nullptr;
|
||||
Pipeline * pipeline;
|
||||
|
||||
FontSource * font_source =nullptr;
|
||||
FontSource * font_source;
|
||||
|
||||
TileFont * tile_font =nullptr;
|
||||
TextLayout * tl_engine =nullptr;
|
||||
TileFont * tile_font;
|
||||
TextLayout * tl_engine;
|
||||
|
||||
Color4f color;
|
||||
GPUBuffer * ubo_color =nullptr;
|
||||
GPUBuffer * ubo_color;
|
||||
|
||||
private:
|
||||
|
||||
@ -51,8 +51,8 @@ namespace hgl
|
||||
|
||||
public:
|
||||
|
||||
TextRenderable *CreateRenderable();
|
||||
RenderableInstance *CreateRenderableInstance(TextRenderable *text_render_obj,const UTF16String &str);
|
||||
TextRenderable *CreateRenderable(const UTF16String &str);
|
||||
RenderableInstance *CreateRenderableInstance(TextRenderable *text_render_obj);
|
||||
};//class TextRender
|
||||
|
||||
/**
|
||||
|
@ -17,6 +17,13 @@ namespace hgl
|
||||
db=new RenderResource(device);
|
||||
tl_engine=new TextLayout();
|
||||
font_source=fs;
|
||||
|
||||
material =nullptr;
|
||||
material_instance =nullptr;
|
||||
sampler =nullptr;
|
||||
pipeline =nullptr;
|
||||
tile_font =nullptr;
|
||||
ubo_color =nullptr;
|
||||
}
|
||||
|
||||
TextRender::~TextRender()
|
||||
@ -131,16 +138,21 @@ namespace hgl
|
||||
return(true);
|
||||
}
|
||||
|
||||
TextRenderable *TextRender::CreateRenderable()
|
||||
TextRenderable *TextRender::CreateRenderable(const UTF16String &str)
|
||||
{
|
||||
return db->CreateTextRenderable(material);
|
||||
TextRenderable *tr=db->CreateTextRenderable(material);
|
||||
|
||||
if(tl_engine->SimpleLayout(tr,tile_font,str)<=0)
|
||||
{
|
||||
delete tr;
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
return tr;
|
||||
}
|
||||
|
||||
RenderableInstance *TextRender::CreateRenderableInstance(TextRenderable *text_render_obj,const UTF16String &str)
|
||||
RenderableInstance *TextRender::CreateRenderableInstance(TextRenderable *text_render_obj)
|
||||
{
|
||||
if(tl_engine->SimpleLayout(text_render_obj,tile_font,str)<=0)
|
||||
return(nullptr);
|
||||
|
||||
return db->CreateRenderableInstance(text_render_obj,material_instance,pipeline);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user