Improved TextRender supports character limit customization.
This commit is contained in:
@@ -30,14 +30,16 @@ private:
|
||||
{
|
||||
UTF16String str;
|
||||
|
||||
LoadStringFromTextFile(str,OS_TEXT("res/text/DaoDeBible.txt"));
|
||||
|
||||
if(str.IsEmpty())return(false);
|
||||
|
||||
FontSource *fs=AcquireFontSource(OS_TEXT("微软雅黑"),12);
|
||||
|
||||
text_render=CreateTextRender(device,fs,device_render_pass,ubo_camera_info);
|
||||
text_render=CreateTextRender(device,fs,device_render_pass,ubo_camera_info,str.Length());
|
||||
if(!text_render)
|
||||
return(false);
|
||||
|
||||
LoadStringFromTextFile(str,OS_TEXT("res/text/DaoDeBible.txt"));
|
||||
|
||||
text_render_obj=text_render->CreateRenderable(str);
|
||||
if(!text_render_obj)
|
||||
return(false);
|
||||
|
@@ -37,10 +37,10 @@ namespace hgl
|
||||
|
||||
private:
|
||||
|
||||
friend TextRender *CreateTextRender(GPUDevice *,FontSource *,RenderPass *,GPUBuffer *);
|
||||
friend TextRender *CreateTextRender(GPUDevice *,FontSource *,RenderPass *,GPUBuffer *,int limit=-1);
|
||||
TextRender(GPUDevice *dev,FontSource *);
|
||||
|
||||
bool InitTileFont();
|
||||
bool InitTileFont(int limit);
|
||||
bool InitTextLayoutEngine();
|
||||
bool InitUBO();
|
||||
bool InitMaterial(RenderPass *,GPUBuffer *);
|
||||
@@ -49,7 +49,7 @@ namespace hgl
|
||||
|
||||
~TextRender();
|
||||
|
||||
bool Init(RenderPass *rp,GPUBuffer *ubo_camera_info);
|
||||
bool Init(RenderPass *rp,GPUBuffer *ubo_camera_info,int limit);
|
||||
|
||||
public:
|
||||
|
||||
@@ -79,9 +79,10 @@ namespace hgl
|
||||
FontSource *AcquireFontSource(const os_char *name,const uint32_t size);
|
||||
|
||||
/**
|
||||
* 创建一个文本渲染器.
|
||||
* 创建一个文本渲染器
|
||||
* @param limit 节数限制(-1表示自动)
|
||||
*/
|
||||
TextRender *CreateTextRender(GPUDevice *,FontSource *,RenderPass *,GPUBuffer *);
|
||||
TextRender *CreateTextRender(GPUDevice *,FontSource *,RenderPass *,GPUBuffer *,int limit);
|
||||
}//namespace graph
|
||||
}//namespace hgl
|
||||
#endif//HGL_GRAPH_TEXT_RENDER_INCLUDE
|
||||
|
@@ -40,9 +40,9 @@ namespace hgl
|
||||
SAFE_CLEAR(db);
|
||||
}
|
||||
|
||||
bool TextRender::InitTileFont()
|
||||
bool TextRender::InitTileFont(int limit)
|
||||
{
|
||||
tile_font=device->CreateTileFont(font_source);
|
||||
tile_font=device->CreateTileFont(font_source,limit);
|
||||
return(true);
|
||||
}
|
||||
|
||||
@@ -128,9 +128,9 @@ namespace hgl
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool TextRender::Init(RenderPass *rp,GPUBuffer *ubo_camera_info)
|
||||
bool TextRender::Init(RenderPass *rp,GPUBuffer *ubo_camera_info,int limit)
|
||||
{
|
||||
if(!InitTileFont())
|
||||
if(!InitTileFont(limit))
|
||||
return(false);
|
||||
|
||||
if(!InitTextLayoutEngine())
|
||||
@@ -213,14 +213,14 @@ namespace hgl
|
||||
return AcquireFontSource(fnt);
|
||||
}
|
||||
|
||||
TextRender *CreateTextRender(GPUDevice *dev,FontSource *fs,RenderPass *rp,GPUBuffer *ubo_camera_info)
|
||||
TextRender *CreateTextRender(GPUDevice *dev,FontSource *fs,RenderPass *rp,GPUBuffer *ubo_camera_info,int limit)
|
||||
{
|
||||
if(!dev||!rp||!ubo_camera_info)
|
||||
return(nullptr);
|
||||
|
||||
TextRender *text_render=new TextRender(dev,fs);
|
||||
|
||||
if(!text_render->Init(rp,ubo_camera_info))
|
||||
if(!text_render->Init(rp,ubo_camera_info,limit))
|
||||
{
|
||||
delete text_render;
|
||||
return(nullptr);
|
||||
|
Reference in New Issue
Block a user