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