From d4e26d13e9b7ec182952f4421bb1991cff57a0f8 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 27 Sep 2021 12:04:29 +0800 Subject: [PATCH] fixed DrawTile sample. --- example/Vulkan/DrawTile.cpp | 46 +++++++++++++++++++++++++++++------ inc/hgl/graph/TextureLoader.h | 2 +- res | 2 +- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/example/Vulkan/DrawTile.cpp b/example/Vulkan/DrawTile.cpp index abfdcf5d..459ea78e 100644 --- a/example/Vulkan/DrawTile.cpp +++ b/example/Vulkan/DrawTile.cpp @@ -36,13 +36,15 @@ class TestApp:public VulkanApplicationFramework float *vertex_data=nullptr; float *tex_coord_data=nullptr; + VkFormat tile_texture_format=PF_UNDEFINED; + private: Sampler * sampler =nullptr; - MaterialParameters * material_instance =nullptr; + MaterialInstance * material_instance =nullptr; Renderable * render_obj =nullptr; RenderableInstance *render_instance =nullptr; - GPUBuffer * ubo_camera_info =nullptr; + GPUBuffer * ubo_camera_info =nullptr; Pipeline * pipeline =nullptr; @@ -67,7 +69,17 @@ private: int result=0; - for(int i=0;iformat; + + for(int i=1;iCreateTileData( PF_BC1_RGBAUN, //纹理格式,因VK不支持实时转换,所以提交的数据格式必须与此一致 + tile_data=device->CreateTileData( tile_texture_format, //纹理格式,不支持实时转换,所以提交的数据格式必须与此一致 512,512, //TILE大小 tile_list.GetCount()); //TILE需求数量 @@ -152,11 +164,29 @@ private: pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Rectangles); - sampler=db->CreateSampler(); + sampler=db->CreateSampler(); - material_instance->BindSampler("tex",tile_data->GetTexture(),sampler); - material_instance->BindUBO("camera",ubo_camera_info); - material_instance->Update(); + { + MaterialParameters *mp_global=material_instance->GetMP(DescriptorSetType::Global); + + if(!mp_global) + return(false); + + if(!mp_global->BindUBO("g_camera",ubo_camera_info))return(false); + + mp_global->Update(); + } + + { + MaterialParameters *mp_texture=material_instance->GetMP(DescriptorSetType::Value); + + if(!mp_texture) + return(false); + + if(!mp_texture->BindSampler("tex",tile_data->GetTexture(),sampler))return(false); + + mp_texture->Update(); + } return(true); } diff --git a/inc/hgl/graph/TextureLoader.h b/inc/hgl/graph/TextureLoader.h index cb3d782a..f8b13e83 100644 --- a/inc/hgl/graph/TextureLoader.h +++ b/inc/hgl/graph/TextureLoader.h @@ -30,7 +30,7 @@ namespace hgl struct Tex2DFileHeader { uint8 id[6]; ///