diff --git a/CMAssetsManage b/CMAssetsManage index a100a10d..c2a18897 160000 --- a/CMAssetsManage +++ b/CMAssetsManage @@ -1 +1 @@ -Subproject commit a100a10dc8750903e5bf3779c1f337f5a940910e +Subproject commit c2a18897ee57706681ed8b803187a129df5b3e40 diff --git a/CMCMakeModule b/CMCMakeModule index 2b3b2256..5530bcc0 160000 --- a/CMCMakeModule +++ b/CMCMakeModule @@ -1 +1 @@ -Subproject commit 2b3b225659aa182b69a53b887815aa915dd8723e +Subproject commit 5530bcc0dc92f76adc0716a4c3c0ca64d8240642 diff --git a/CMCore b/CMCore index 02cb4bb8..f6a846c6 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 02cb4bb8b3f086321c8dd5773cc6355e72a5c8cb +Subproject commit f6a846c655dbf2b50f600f61809419075069990a diff --git a/CMPlatform b/CMPlatform index 165e95c0..cdd9d4eb 160000 --- a/CMPlatform +++ b/CMPlatform @@ -1 +1 @@ -Subproject commit 165e95c0d54e4ba978bcba50a0f7b43200648309 +Subproject commit cdd9d4eb14f4c7f852362f59c14d680f39370685 diff --git a/example/Vulkan/CMakeLists.txt b/example/Vulkan/CMakeLists.txt index 3fade0e0..d9800499 100644 --- a/example/Vulkan/CMakeLists.txt +++ b/example/Vulkan/CMakeLists.txt @@ -35,11 +35,13 @@ CreateProject(08.SceneTree SceneTree.cpp) CreateProject(09.LoadStaticMesh LoadStaticMesh.cpp LoadScene.cpp) CreateProject(10.InlineGeometryScene InlineGeometryScene.cpp) CreateProject(11.Atomsphere Atomsphere.cpp) -CreateProject(12.DrawText DrawText.cpp) + +CreateProject(12.RectanglePrimivate RectanglePrimivate.cpp) +CreateProject(13.DrawText DrawText.cpp) IF(SUPPORT_QT_VULKAN) include(QtCommon) -CreateQtProject(13.VulkanQT VulkanQtApp.cpp +CreateQtProject(14.VulkanQT VulkanQtApp.cpp QtVulkanWindow.cpp QtVulkanWindow.h QtVulkanMainWindow.h diff --git a/example/Vulkan/VulkanAppFramework.h b/example/Vulkan/VulkanAppFramework.h index 23127893..de702e16 100644 --- a/example/Vulkan/VulkanAppFramework.h +++ b/example/Vulkan/VulkanAppFramework.h @@ -112,7 +112,7 @@ public: cili.khronos.validation = true; cili.RenderDoc.Capture = true; - inst=vulkan::CreateInstance(U8_TEXT("VulkanTest"),nullptr,&cili); + inst=vulkan::CreateInstance("VulkanTest",nullptr,&cili); if(!inst) return(false); diff --git a/inc/hgl/graph/font/TileFont.h b/inc/hgl/graph/font/TileFont.h index 887034d9..2c2455e3 100644 --- a/inc/hgl/graph/font/TileFont.h +++ b/inc/hgl/graph/font/TileFont.h @@ -15,7 +15,7 @@ namespace hgl */ class TileFont { - + FontSource *source; TileData *tile_data; public: diff --git a/inc/hgl/graph/shader/ShaderResource.h b/inc/hgl/graph/shader/ShaderResource.h index dcbb8bbd..d49b9f12 100644 --- a/inc/hgl/graph/shader/ShaderResource.h +++ b/inc/hgl/graph/shader/ShaderResource.h @@ -7,7 +7,7 @@ VK_NAMESPACE_BEGIN struct ShaderStage { - UTF8String name; + AnsiString name; uint location; VkFormat format; };//struct ShaderStage @@ -17,7 +17,7 @@ VK_NAMESPACE_BEGIN struct ShaderDescriptorList { - UTF8StringList name_list; + AnsiStringList name_list; ShaderBindingList binding_list; }; @@ -60,7 +60,7 @@ VK_NAMESPACE_BEGIN ShaderStageList &GetStageInputs(){return stage_inputs;} ShaderStageList &GetStageOutputs(){return stage_outputs;} - const int GetStageInputBinding(const UTF8String &); + const int GetStageInputBinding(const AnsiString &); const ShaderDescriptorList *GetDescriptorList()const{return descriptor_list;} ShaderDescriptorList *GetDescriptorList(VkDescriptorType desc_type) @@ -75,7 +75,7 @@ VK_NAMESPACE_BEGIN ShaderDescriptorList &GetSSBO(){return descriptor_list[VK_DESCRIPTOR_TYPE_STORAGE_BUFFER];} ShaderDescriptorList &GetSampler(){return descriptor_list[VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER];} - const int GetBinding (VkDescriptorType desc_type,const UTF8String &name)const; + const int GetBinding (VkDescriptorType desc_type,const AnsiString &name)const; const ShaderBindingList * GetBindingList (VkDescriptorType desc_type)const { if(desc_type & GetExtensionProperties(); const bool CheckLayerSupport(const char *); - Instance *CreateInstance(const UTF8String &,VKDebugOut *,CreateInstanceLayerInfo *); ///<创建一个Vulkan实例 + Instance *CreateInstance(const AnsiString &,VKDebugOut *,CreateInstanceLayerInfo *); ///<创建一个Vulkan实例 VK_NAMESPACE_END #endif//HGL_GRAPH_VULKAN_INSTANCE_INCLUDE diff --git a/inc/hgl/graph/vulkan/VKMaterial.h b/inc/hgl/graph/vulkan/VKMaterial.h index 633e6456..76b942bd 100644 --- a/inc/hgl/graph/vulkan/VKMaterial.h +++ b/inc/hgl/graph/vulkan/VKMaterial.h @@ -30,9 +30,9 @@ public: const VertexShaderModule *GetVertexShaderModule()const{return vertex_sm;} - const int GetBinding(VkDescriptorType,const UTF8String &)const; + const int GetBinding(VkDescriptorType,const AnsiString &)const; -#define GET_BO_BINDING(name,vk_name) const int Get##name(const UTF8String &obj_name)const{return GetBinding(VK_DESCRIPTOR_TYPE_##vk_name,obj_name);} +#define GET_BO_BINDING(name,vk_name) const int Get##name(const AnsiString &obj_name)const{return GetBinding(VK_DESCRIPTOR_TYPE_##vk_name,obj_name);} // GET_BO_BINDING(Sampler, SAMPLER) GET_BO_BINDING(Sampler, COMBINED_IMAGE_SAMPLER) diff --git a/inc/hgl/graph/vulkan/VKMaterialInstance.h b/inc/hgl/graph/vulkan/VKMaterialInstance.h index 56217745..a6c28be5 100644 --- a/inc/hgl/graph/vulkan/VKMaterialInstance.h +++ b/inc/hgl/graph/vulkan/VKMaterialInstance.h @@ -25,8 +25,8 @@ public: ~MaterialInstance(); - bool BindUBO(const UTF8String &name,vulkan::Buffer *ubo); - bool BindSampler(const UTF8String &name,Texture *tex,Sampler *sampler); + bool BindUBO(const AnsiString &name,vulkan::Buffer *ubo); + bool BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler); void Update(); };//class MaterialInstance diff --git a/inc/hgl/graph/vulkan/VKPhysicalDevice.h b/inc/hgl/graph/vulkan/VKPhysicalDevice.h index ec7cc517..98da688a 100644 --- a/inc/hgl/graph/vulkan/VKPhysicalDevice.h +++ b/inc/hgl/graph/vulkan/VKPhysicalDevice.h @@ -33,7 +33,7 @@ public: const VkPhysicalDeviceProperties & GetProperties ()const{return properties;} const VkPhysicalDeviceMemoryProperties &GetMemoryProperties ()const{return memory_properties;} - const uint32_t GetExtensionSpecVersion(const UTF8String &name)const; + const uint32_t GetExtensionSpecVersion(const AnsiString &name)const; const VkDriverIdKHR GetDriverId ()const{return driver_properties.driverID;} const char * GetDriverName ()const{return driver_properties.driverName;} diff --git a/inc/hgl/graph/vulkan/VKPipeline.h b/inc/hgl/graph/vulkan/VKPipeline.h index 5880f3b3..bcc04659 100644 --- a/inc/hgl/graph/vulkan/VKPipeline.h +++ b/inc/hgl/graph/vulkan/VKPipeline.h @@ -83,7 +83,7 @@ public: PipelineCreater(Device *dev,const Material *,const RenderTarget *,uchar *,uint); ~PipelineCreater()=default; - bool Set(const VkPrimitiveTopology,bool=false); + bool Set(const uint prim,bool=false); void SetViewport( float x,float y,float w,float h){viewport.x=x;viewport.y=y;viewport.width=w;viewport.height=h;} void SetDepthRange( float min_depth,float max_depth){viewport.minDepth=min_depth;viewport.maxDepth=max_depth;} diff --git a/inc/hgl/graph/vulkan/VKPrimivate.h b/inc/hgl/graph/vulkan/VKPrimivate.h index efd6cece..139ef7fc 100644 --- a/inc/hgl/graph/vulkan/VKPrimivate.h +++ b/inc/hgl/graph/vulkan/VKPrimivate.h @@ -14,7 +14,7 @@ #define PRIM_TRIANGLES_ADJ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ///<代表一个有六个顶点的Primitive,其中第1,3,5个顶点代表一个Triangle,而地2,4,6个点提供邻近信息.(由1起算) #define PRIM_TRIANGLE_STRIP_ADJ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ///<4+2N个Vertices代表N个Primitive,其中1,3,5,7,9...代表原本的Triangle strip形成Triangle,而2,4,6,8,10...代表邻近提供信息的点.(由1起算) #define PRIM_PATCHS VK_PRIMITIVE_TOPOLOGY_PATCH_LIST -#define PRIM_RECTANGLE 0x100 ///<矩形(并非原生支持。以画点形式在每个点的Position中传递Left,Top,Width,Height。在Geometry Shader中转换为2个三角形。用于2D游戏或UI) +#define PRIM_RECTANGLES 0x100 ///<矩形(并非原生支持。以画点形式在每个点的Position中传递Left,Top,Width,Height。在Geometry Shader中转换为2个三角形。用于2D游戏或UI) #define PRIM_BEGIN VK_PRIMITIVE_TOPOLOGY_POINT_LIST #define PRIM_END VK_PRIMITIVE_TOPOLOGY_PATCH_LIST constexpr uint32_t PRIM_RANGE =PRIM_END-PRIM_BEGIN+1; diff --git a/inc/hgl/graph/vulkan/VKRenderable.h b/inc/hgl/graph/vulkan/VKRenderable.h index 09465b35..b6632f81 100644 --- a/inc/hgl/graph/vulkan/VKRenderable.h +++ b/inc/hgl/graph/vulkan/VKRenderable.h @@ -48,7 +48,7 @@ public: const AABB &GetBoundingBox()const {return BoundingBox;} bool Set(const int stage_input_binding, VertexBuffer *vb,VkDeviceSize offset=0); - bool Set(const UTF8String &name, VertexBuffer *vb,VkDeviceSize offset=0); + bool Set(const AnsiString &name, VertexBuffer *vb,VkDeviceSize offset=0); bool Set(IndexBuffer *ib,VkDeviceSize offset=0) { diff --git a/inc/hgl/graph/vulkan/VKShaderModule.h b/inc/hgl/graph/vulkan/VKShaderModule.h index 61bf2b7f..1f8bbae1 100644 --- a/inc/hgl/graph/vulkan/VKShaderModule.h +++ b/inc/hgl/graph/vulkan/VKShaderModule.h @@ -39,7 +39,7 @@ public: const VkShaderStageFlagBits GetStage ()const{return stage_create_info->stage;} const VkPipelineShaderStageCreateInfo * GetCreateInfo ()const{return stage_create_info;} - const int GetBinding (VkDescriptorType desc_type,const UTF8String &name)const + const int GetBinding (VkDescriptorType desc_type,const AnsiString &name)const { return shader_resource->GetBinding(desc_type,name); } @@ -71,7 +71,7 @@ public: /** * 获取输入流绑定点,需要注意的时,这里获取的binding并非是shader中的binding/location,而是绑定顺序的序列号。对应vkCmdBindVertexBuffer的缓冲区序列号 */ - const int GetStageInputBinding(const UTF8String &name)const{return shader_resource->GetStageInputBinding(name);} + const int GetStageInputBinding(const AnsiString &name)const{return shader_resource->GetStageInputBinding(name);} const uint32_t GetAttrCount()const{return attr_count;} diff --git a/inc/hgl/graph/vulkan/VKVertexAttributeBinding.h b/inc/hgl/graph/vulkan/VKVertexAttributeBinding.h index 5470c7e0..8412b047 100644 --- a/inc/hgl/graph/vulkan/VKVertexAttributeBinding.h +++ b/inc/hgl/graph/vulkan/VKVertexAttributeBinding.h @@ -25,17 +25,17 @@ public: ~VertexAttributeBinding(); - const uint GetStageInputBinding(const UTF8String &name); ///<取得一个变量的绑定点 + const uint GetStageInputBinding(const AnsiString &name); ///<取得一个变量的绑定点 bool SetInstance(const uint binding,bool instance); bool SetStride (const uint binding,const uint32_t & stride); bool SetFormat (const uint binding,const VkFormat & format); bool SetOffset (const uint binding,const uint32_t offset); - bool SetInstance(const UTF8String &name,bool instance){return SetInstance(GetStageInputBinding(name),instance);} - bool SetStride (const UTF8String &name,const uint32_t &stride ){return SetStride (GetStageInputBinding(name),stride);} - bool SetFormat (const UTF8String &name,const VkFormat &format ){return SetFormat (GetStageInputBinding(name),format);} - bool SetOffset (const UTF8String &name,const uint32_t offset ){return SetOffset (GetStageInputBinding(name),offset);} + bool SetInstance(const AnsiString &name,bool instance){return SetInstance(GetStageInputBinding(name),instance);} + bool SetStride (const AnsiString &name,const uint32_t &stride ){return SetStride (GetStageInputBinding(name),stride);} + bool SetFormat (const AnsiString &name,const VkFormat &format ){return SetFormat (GetStageInputBinding(name),format);} + bool SetOffset (const AnsiString &name,const uint32_t offset ){return SetOffset (GetStageInputBinding(name),offset);} void Write(VkPipelineVertexInputStateCreateInfo &vis)const; };//class VertexAttributeBinding diff --git a/src/RenderDevice/Vulkan/VKDeviceCreater.cpp b/src/RenderDevice/Vulkan/VKDeviceCreater.cpp index 32d0782a..67d87dc7 100644 --- a/src/RenderDevice/Vulkan/VKDeviceCreater.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceCreater.cpp @@ -350,7 +350,7 @@ namespace std::cout<<" deviceType: "<(pdp.pipelineCacheUUID); + AnsiString uuid=HexToString(pdp.pipelineCacheUUID); std::cout<<"pipelineCahceUUID: "<VK_DESCRIPTOR_TYPE_END_RANGE diff --git a/src/RenderDevice/Vulkan/VKMaterialInstance.cpp b/src/RenderDevice/Vulkan/VKMaterialInstance.cpp index c076e25e..71971c2d 100644 --- a/src/RenderDevice/Vulkan/VKMaterialInstance.cpp +++ b/src/RenderDevice/Vulkan/VKMaterialInstance.cpp @@ -15,7 +15,7 @@ MaterialInstance::~MaterialInstance() delete descriptor_sets; } -bool MaterialInstance::BindUBO(const UTF8String &name,vulkan::Buffer *ubo) +bool MaterialInstance::BindUBO(const AnsiString &name,vulkan::Buffer *ubo) { if(name.IsEmpty()||!ubo) return(false); @@ -31,7 +31,7 @@ bool MaterialInstance::BindUBO(const UTF8String &name,vulkan::Buffer *ubo) return(true); } -bool MaterialInstance::BindSampler(const UTF8String &name,Texture *tex,Sampler *sampler) +bool MaterialInstance::BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler) { if(name.IsEmpty()||!tex||!sampler) return(false); diff --git a/src/RenderDevice/Vulkan/VKPhysicalDevice.cpp b/src/RenderDevice/Vulkan/VKPhysicalDevice.cpp index 95eb0850..d4c84752 100644 --- a/src/RenderDevice/Vulkan/VKPhysicalDevice.cpp +++ b/src/RenderDevice/Vulkan/VKPhysicalDevice.cpp @@ -58,7 +58,7 @@ PhysicalDevice::PhysicalDevice(VkInstance inst,VkPhysicalDevice pd) } } -const uint32_t PhysicalDevice::GetExtensionSpecVersion(const UTF8String &name)const +const uint32_t PhysicalDevice::GetExtensionSpecVersion(const AnsiString &name)const { const uint count=extension_properties.GetCount(); const VkExtensionProperties *ep=extension_properties.GetData(); diff --git a/src/RenderDevice/Vulkan/VKPipeline.cpp b/src/RenderDevice/Vulkan/VKPipeline.cpp index b987ca1c..28593974 100644 --- a/src/RenderDevice/Vulkan/VKPipeline.cpp +++ b/src/RenderDevice/Vulkan/VKPipeline.cpp @@ -217,15 +217,15 @@ PipelineCreater::PipelineCreater(Device *dev,const Material *material,const Rend } } -bool PipelineCreater::Set(const VkPrimitiveTopology topology,bool restart) +bool PipelineCreater::Set(const uint topology,bool restart) { if(topologyPRIM_END) - if(topology!=PRIM_RECTANGLE)return(false); + if(topology!=PRIM_RECTANGLES)return(false); inputAssembly.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; inputAssembly.pNext = nullptr; inputAssembly.flags = 0; - inputAssembly.topology = (topology==PRIM_RECTANGLE?VK_PRIMITIVE_TOPOLOGY_POINT_LIST:topology); + inputAssembly.topology = VkPrimitiveTopology(topology==PRIM_RECTANGLES?VK_PRIMITIVE_TOPOLOGY_POINT_LIST:topology); inputAssembly.primitiveRestartEnable = restart; pipelineInfo.pInputAssemblyState = &inputAssembly; diff --git a/src/RenderDevice/Vulkan/VKRenderable.cpp b/src/RenderDevice/Vulkan/VKRenderable.cpp index caad7032..e26430d0 100644 --- a/src/RenderDevice/Vulkan/VKRenderable.cpp +++ b/src/RenderDevice/Vulkan/VKRenderable.cpp @@ -38,7 +38,7 @@ bool Renderable::Set(const int stage_input_binding,VertexBuffer *vbo,VkDeviceSiz return(true); } -bool Renderable::Set(const UTF8String &name,VertexBuffer *vbo,VkDeviceSize offset) +bool Renderable::Set(const AnsiString &name,VertexBuffer *vbo,VkDeviceSize offset) { return Set(vertex_sm->GetStageInputBinding(name),vbo,offset); } diff --git a/src/RenderDevice/Vulkan/VKVertexAttributeBinding.cpp b/src/RenderDevice/Vulkan/VKVertexAttributeBinding.cpp index 3a5956be..451d2a3a 100644 --- a/src/RenderDevice/Vulkan/VKVertexAttributeBinding.cpp +++ b/src/RenderDevice/Vulkan/VKVertexAttributeBinding.cpp @@ -27,7 +27,7 @@ VertexAttributeBinding::~VertexAttributeBinding() vsm->Release(this); } -const uint VertexAttributeBinding::GetStageInputBinding(const UTF8String &name) +const uint VertexAttributeBinding::GetStageInputBinding(const AnsiString &name) { return vsm->GetStageInputBinding(name); } diff --git a/src/SceneGraph/font/FontSourceManage.cpp b/src/SceneGraph/font/FontSourceManage.cpp index 281fc7e6..08deea25 100644 --- a/src/SceneGraph/font/FontSourceManage.cpp +++ b/src/SceneGraph/font/FontSourceManage.cpp @@ -21,4 +21,4 @@ namespace hgl return source; } }//namespace graph -}//namespace hgl \ No newline at end of file +}//namespace hgl diff --git a/src/SceneGraph/font/TileFont.cpp b/src/SceneGraph/font/TileFont.cpp index 0f40d1aa..4f19f58b 100644 --- a/src/SceneGraph/font/TileFont.cpp +++ b/src/SceneGraph/font/TileFont.cpp @@ -10,22 +10,19 @@ namespace hgl TileFont::TileFont(TileData *td,FontSource *fs) { - hgl_zero(source_map); tile_data=td; - - for(uint i=0;i<(uint)UnicodeBlock::RANGE_SIZE;i++) - source_map[i]=fs; - fs->RefAcquire(this); + if(fs) + { + source=fs; + source->RefAcquire(this); + } } TileFont::~TileFont() { - for(uint i=0;i<(uint)UnicodeBlock::RANGE_SIZE;i++) - { - if(source_map[i]) - source_map[i]->RefRelease(this); - } + if(source) + source->RefRelease(this); SAFE_CLEAR(tile_data); } diff --git a/src/SceneGraph/shader/ShaderResource.cpp b/src/SceneGraph/shader/ShaderResource.cpp index cc272c99..4276ea3c 100644 --- a/src/SceneGraph/shader/ShaderResource.cpp +++ b/src/SceneGraph/shader/ShaderResource.cpp @@ -65,7 +65,7 @@ VK_NAMESPACE_BEGIN { sd_list->binding_list.Add(*data++); str_len=*data++; - sd_list->name_list.Add(UTF8String((char *)data,str_len)); + sd_list->name_list.Add(AnsiString((char *)data,str_len)); data+=str_len; } @@ -86,7 +86,7 @@ VK_NAMESPACE_BEGIN delete[] data; } - const int ShaderResource::GetStageInputBinding(const UTF8String &name) + const int ShaderResource::GetStageInputBinding(const AnsiString &name) { const int count=stage_inputs.GetCount(); ShaderStage **ss=stage_inputs.GetData(); @@ -102,7 +102,7 @@ VK_NAMESPACE_BEGIN return -1; } - const int ShaderResource::GetBinding(VkDescriptorType desc_type,const UTF8String &name)const + const int ShaderResource::GetBinding(VkDescriptorType desc_type,const AnsiString &name)const { if(desc_type>=VK_DESCRIPTOR_TYPE_RANGE_SIZE)return -1; if(name.IsEmpty())return -1;