修改以支持win32模式
This commit is contained in:
parent
5ef05ffbcb
commit
4586038c6f
@ -70,7 +70,7 @@ private:
|
|||||||
if(!ubo_atomsphere)
|
if(!ubo_atomsphere)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
return desc_set->BindUBO(bindpoint,*ubo_atomsphere);
|
return desc_set->BindUBO(bindpoint,ubo_atomsphere);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InitUBO()
|
bool InitUBO()
|
||||||
|
@ -20,13 +20,6 @@ constexpr uint32_t GBUFFER_HEIGHT=1024;
|
|||||||
constexpr uint32_t SCREEN_WIDTH=128;
|
constexpr uint32_t SCREEN_WIDTH=128;
|
||||||
constexpr uint32_t SCREEN_HEIGHT=128;
|
constexpr uint32_t SCREEN_HEIGHT=128;
|
||||||
|
|
||||||
struct AtomsphereData
|
|
||||||
{
|
|
||||||
alignas(16) Vector3f position;
|
|
||||||
float intensity;
|
|
||||||
float scattering_direction;
|
|
||||||
};//
|
|
||||||
|
|
||||||
using Texture2DPointer=vulkan::Texture2D *;
|
using Texture2DPointer=vulkan::Texture2D *;
|
||||||
|
|
||||||
constexpr VkFormat position_candidate_format[]={FMT_RGBA32F,FMT_RGBA16F};
|
constexpr VkFormat position_candidate_format[]={FMT_RGBA32F,FMT_RGBA16F};
|
||||||
|
@ -105,7 +105,7 @@ private:
|
|||||||
if(!ubo_mvp)
|
if(!ubo_mvp)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
if(!descriptor_sets->BindUBO(material->GetUBO("world"),*ubo_mvp))
|
if(!descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
descriptor_sets->Update();
|
descriptor_sets->Update();
|
||||||
|
@ -76,7 +76,7 @@ public:
|
|||||||
if(!ubo_world_matrix)
|
if(!ubo_world_matrix)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
return desc_set->BindUBO(world_matrix_bindpoint,*ubo_world_matrix);
|
return desc_set->BindUBO(world_matrix_bindpoint,ubo_world_matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resize(int w,int h)override
|
void Resize(int w,int h)override
|
||||||
|
@ -292,7 +292,7 @@ public:
|
|||||||
if(!ubo_world_matrix)
|
if(!ubo_world_matrix)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
return desc_set->BindUBO(world_matrix_bindpoint,*ubo_world_matrix);
|
return desc_set->BindUBO(world_matrix_bindpoint,ubo_world_matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void BuildCommandBuffer(uint32_t index)=0;
|
virtual void BuildCommandBuffer(uint32_t index)=0;
|
||||||
|
@ -85,7 +85,7 @@ private:
|
|||||||
if(!ubo_mvp)
|
if(!ubo_mvp)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
if(!descriptor_sets->BindUBO(material->GetUBO("world"),*ubo_mvp))
|
if(!descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
descriptor_sets->Update();
|
descriptor_sets->Update();
|
||||||
|
@ -86,7 +86,7 @@ private:
|
|||||||
if(!ubo_mvp)
|
if(!ubo_mvp)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
if(!descriptor_sets->BindUBO(material->GetUBO("world"),*ubo_mvp))
|
if(!descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
descriptor_sets->Update();
|
descriptor_sets->Update();
|
||||||
|
@ -118,7 +118,7 @@ private:
|
|||||||
sampler=device->CreateSampler(&sampler_create_info);
|
sampler=device->CreateSampler(&sampler_create_info);
|
||||||
|
|
||||||
descriptor_sets->BindSampler(material->GetSampler("texture_lena"),texture,sampler);
|
descriptor_sets->BindSampler(material->GetSampler("texture_lena"),texture,sampler);
|
||||||
descriptor_sets->BindUBO(material->GetUBO("world"),*ubo_mvp);
|
descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp);
|
||||||
descriptor_sets->Update();
|
descriptor_sets->Update();
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
|
@ -87,7 +87,7 @@ namespace hgl
|
|||||||
CubeCreateInfo()
|
CubeCreateInfo()
|
||||||
{
|
{
|
||||||
center.Set(0,0,0);
|
center.Set(0,0,0);
|
||||||
center.Set(1,1,1);
|
size.Set(1,1,1);
|
||||||
tile.Set(1,1);
|
tile.Set(1,1);
|
||||||
}
|
}
|
||||||
};//struct CubeCreateInfo
|
};//struct CubeCreateInfo
|
||||||
|
@ -35,9 +35,9 @@ public:
|
|||||||
|
|
||||||
virtual ~Buffer();
|
virtual ~Buffer();
|
||||||
|
|
||||||
operator VkBuffer (){return buf.buffer;}
|
VkBuffer GetBuffer (){return buf.buffer;}
|
||||||
operator Memory * (){return buf.memory;}
|
Memory * GetMemory (){return buf.memory;}
|
||||||
operator VkDescriptorBufferInfo * (){return &buf.info;}
|
const VkDescriptorBufferInfo * GetBufferInfo()const{return &buf.info;}
|
||||||
|
|
||||||
void * Map() {return buf.memory->Map();}
|
void * Map() {return buf.memory->Map();}
|
||||||
virtual void * Map(VkDeviceSize start,VkDeviceSize size) {return buf.memory->Map(start,size);}
|
virtual void * Map(VkDeviceSize start,VkDeviceSize size) {return buf.memory->Map(start,size);}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include<hgl/type/Map.h>
|
#include<hgl/type/Map.h>
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
class Device;
|
class Device;
|
||||||
|
class Buffer;
|
||||||
|
|
||||||
class DescriptorSets
|
class DescriptorSets
|
||||||
{
|
{
|
||||||
@ -39,8 +40,8 @@ public:
|
|||||||
const VkPipelineLayout GetPipelineLayout ()const{return pipeline_layout;}
|
const VkPipelineLayout GetPipelineLayout ()const{return pipeline_layout;}
|
||||||
|
|
||||||
void Clear();
|
void Clear();
|
||||||
bool BindUBO(const uint32_t binding,const VkDescriptorBufferInfo *);
|
bool BindUBO(const uint32_t binding,const Buffer *);
|
||||||
bool BindUBODynamic(const uint32_t binding,const VkDescriptorBufferInfo *);
|
bool BindUBODynamic(const uint32_t binding,const Buffer *);
|
||||||
bool BindSampler(const uint32_t binding,Texture *,Sampler *);
|
bool BindSampler(const uint32_t binding,Texture *,Sampler *);
|
||||||
void Update();
|
void Update();
|
||||||
};//class DescriptorSets
|
};//class DescriptorSets
|
||||||
|
@ -8,18 +8,18 @@ constexpr uint32_t ERROR_FAMILY_INDEX=UINT32_MAX;
|
|||||||
|
|
||||||
struct DeviceAttribute
|
struct DeviceAttribute
|
||||||
{
|
{
|
||||||
VkInstance instance =nullptr;
|
VkInstance instance =VK_NULL_HANDLE;
|
||||||
const PhysicalDevice * physical_device =nullptr;
|
const PhysicalDevice * physical_device =nullptr;
|
||||||
|
|
||||||
VkSurfaceKHR surface =nullptr;
|
VkSurfaceKHR surface =VK_NULL_HANDLE;
|
||||||
VkSurfaceCapabilitiesKHR surface_caps;
|
VkSurfaceCapabilitiesKHR surface_caps;
|
||||||
VkExtent2D swapchain_extent;
|
VkExtent2D swapchain_extent;
|
||||||
|
|
||||||
uint32_t graphics_family =ERROR_FAMILY_INDEX;
|
uint32_t graphics_family =ERROR_FAMILY_INDEX;
|
||||||
uint32_t present_family =ERROR_FAMILY_INDEX;
|
uint32_t present_family =ERROR_FAMILY_INDEX;
|
||||||
|
|
||||||
VkQueue graphics_queue =nullptr;
|
VkQueue graphics_queue =VK_NULL_HANDLE;
|
||||||
VkQueue present_queue =nullptr;
|
VkQueue present_queue =VK_NULL_HANDLE;
|
||||||
|
|
||||||
List<VkQueueFamilyProperties> family_properties;
|
List<VkQueueFamilyProperties> family_properties;
|
||||||
List<VkBool32> supports_present;
|
List<VkBool32> supports_present;
|
||||||
@ -31,16 +31,16 @@ struct DeviceAttribute
|
|||||||
VkSurfaceTransformFlagBitsKHR preTransform;
|
VkSurfaceTransformFlagBitsKHR preTransform;
|
||||||
VkCompositeAlphaFlagBitsKHR compositeAlpha =VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
|
VkCompositeAlphaFlagBitsKHR compositeAlpha =VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
|
||||||
|
|
||||||
VkDevice device =nullptr;
|
VkDevice device =VK_NULL_HANDLE;
|
||||||
VkCommandPool cmd_pool =nullptr;
|
VkCommandPool cmd_pool =VK_NULL_HANDLE;
|
||||||
VkSwapchainKHR swap_chain =nullptr;
|
VkSwapchainKHR swap_chain =VK_NULL_HANDLE;
|
||||||
|
|
||||||
ObjectList<Texture2D> sc_texture;
|
ObjectList<Texture2D> sc_texture;
|
||||||
Texture2D * sc_depth =nullptr;
|
Texture2D * sc_depth =nullptr;
|
||||||
|
|
||||||
VkDescriptorPool desc_pool =nullptr;
|
VkDescriptorPool desc_pool =VK_NULL_HANDLE;
|
||||||
|
|
||||||
VkPipelineCache pipeline_cache =nullptr;
|
VkPipelineCache pipeline_cache =VK_NULL_HANDLE;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ public:
|
|||||||
|
|
||||||
ImageView *CreateImageView(VkDevice device,VkImageViewType type,VkFormat format,VkImageAspectFlags aspectMask,VkImage img);
|
ImageView *CreateImageView(VkDevice device,VkImageViewType type,VkFormat format,VkImageAspectFlags aspectMask,VkImage img);
|
||||||
|
|
||||||
#define CREATE_IMAGE_VIEW(short_name,larget_name) inline ImageView *CreateImageView##short_name(VkDevice device,VkFormat format,VkImageAspectFlags aspectMask,VkImage img=nullptr){return CreateImageView(device,VK_IMAGE_VIEW_TYPE_##larget_name,format,aspectMask,img);}
|
#define CREATE_IMAGE_VIEW(short_name,larget_name) inline ImageView *CreateImageView##short_name(VkDevice device,VkFormat format,VkImageAspectFlags aspectMask,VkImage img=VK_NULL_HANDLE){return CreateImageView(device,VK_IMAGE_VIEW_TYPE_##larget_name,format,aspectMask,img);}
|
||||||
CREATE_IMAGE_VIEW(1D,1D);
|
CREATE_IMAGE_VIEW(1D,1D);
|
||||||
CREATE_IMAGE_VIEW(2D,2D);
|
CREATE_IMAGE_VIEW(2D,2D);
|
||||||
CREATE_IMAGE_VIEW(3D,3D);
|
CREATE_IMAGE_VIEW(3D,3D);
|
||||||
|
@ -45,8 +45,8 @@ public:
|
|||||||
bool Write(const void *ptr,VkDeviceSize start,VkDeviceSize size);
|
bool Write(const void *ptr,VkDeviceSize start,VkDeviceSize size);
|
||||||
bool Write(const void *ptr){return Write(ptr,0,req.size);}
|
bool Write(const void *ptr){return Write(ptr,0,req.size);}
|
||||||
|
|
||||||
bool Bind(VkBuffer buffer);
|
bool BindBuffer(VkBuffer buffer);
|
||||||
bool Bind(VkImage image);
|
bool BindImage(VkImage image);
|
||||||
};//class Memory
|
};//class Memory
|
||||||
|
|
||||||
Memory *CreateMemory(VkDevice device,const PhysicalDevice *pd,const VkMemoryRequirements &req,uint32_t properties);
|
Memory *CreateMemory(VkDevice device,const PhysicalDevice *pd,const VkMemoryRequirements &req,uint32_t properties);
|
||||||
|
@ -8,7 +8,7 @@ VK_NAMESPACE_BEGIN
|
|||||||
struct TextureData
|
struct TextureData
|
||||||
{
|
{
|
||||||
Memory * memory =nullptr;
|
Memory * memory =nullptr;
|
||||||
VkImage image =nullptr;
|
VkImage image =VK_NULL_HANDLE;
|
||||||
VkImageLayout image_layout=VK_IMAGE_LAYOUT_UNDEFINED;
|
VkImageLayout image_layout=VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
ImageView * image_view =nullptr;
|
ImageView * image_view =nullptr;
|
||||||
uint32 mip_levels =0;
|
uint32 mip_levels =0;
|
||||||
@ -27,17 +27,15 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
operator TextureData * (){return data;}
|
TextureData * GetData (){return data;}
|
||||||
|
|
||||||
operator VkDeviceMemory (){return data?data->memory->operator VkDeviceMemory():nullptr;}
|
VkDeviceMemory GetDeviceMemory (){return data?data->memory->operator VkDeviceMemory():VK_NULL_HANDLE;}
|
||||||
operator VkImage (){return data?data->image:nullptr;}
|
VkImage GetImage (){return data?data->image:VK_NULL_HANDLE;}
|
||||||
operator VkImageLayout (){return data?data->image_layout:VK_IMAGE_LAYOUT_UNDEFINED;}
|
VkImageLayout GetImageLayout (){return data?data->image_layout:VK_IMAGE_LAYOUT_UNDEFINED;}
|
||||||
operator VkImageView (){return data?data->image_view->operator VkImageView():nullptr;}
|
VkImageView GetVulkanImageView (){return data?data->image_view->operator VkImageView():VK_NULL_HANDLE;}
|
||||||
|
|
||||||
operator Memory * (){return data?data->memory:nullptr;}
|
Memory * GetMemory (){return data?data->memory:nullptr;}
|
||||||
operator ImageView * (){return data?data->image_view:nullptr;}
|
ImageView * GetImageView (){return data?data->image_view:nullptr;}
|
||||||
|
|
||||||
ImageView * GetImageView(){return data?data->image_view:nullptr;}
|
|
||||||
|
|
||||||
const uint32 GetMipLevels()const{return data?data->mip_levels:0;}
|
const uint32 GetMipLevels()const{return data?data->mip_levels:0;}
|
||||||
const bool IsLinear ()const{return data?data->linear:false;}
|
const bool IsLinear ()const{return data?data->linear:false;}
|
||||||
|
@ -16,7 +16,7 @@ namespace hgl
|
|||||||
VkResult res=vkCreateWin32SurfaceKHR(vk_inst,&createInfo,nullptr,&surface);
|
VkResult res=vkCreateWin32SurfaceKHR(vk_inst,&createInfo,nullptr,&surface);
|
||||||
|
|
||||||
if(res!=VK_SUCCESS)
|
if(res!=VK_SUCCESS)
|
||||||
return(nullptr);
|
return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
return(surface);
|
return(surface);
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ CommandBuffer::CommandBuffer(VkDevice dev,const VkExtent2D &extent,VkCommandPool
|
|||||||
render_area.offset.y=0;
|
render_area.offset.y=0;
|
||||||
render_area.extent=extent;
|
render_area.extent=extent;
|
||||||
|
|
||||||
pipeline_layout=nullptr;
|
pipeline_layout=VK_NULL_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandBuffer::~CommandBuffer()
|
CommandBuffer::~CommandBuffer()
|
||||||
@ -72,7 +72,7 @@ bool CommandBuffer::BeginRenderPass(RenderPass *rp,Framebuffer *fb)
|
|||||||
vkCmdSetViewport(cmd_buf,0,1,&viewport);
|
vkCmdSetViewport(cmd_buf,0,1,&viewport);
|
||||||
vkCmdSetScissor(cmd_buf,0,1,&render_area);
|
vkCmdSetScissor(cmd_buf,0,1,&render_area);
|
||||||
|
|
||||||
pipeline_layout=nullptr;
|
pipeline_layout=VK_NULL_HANDLE;
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
@ -92,7 +92,7 @@ bool CommandBuffer::Bind(Renderable *render_obj)
|
|||||||
IndexBuffer *indices_buffer=render_obj->GetIndexBuffer();
|
IndexBuffer *indices_buffer=render_obj->GetIndexBuffer();
|
||||||
|
|
||||||
if(indices_buffer)
|
if(indices_buffer)
|
||||||
vkCmdBindIndexBuffer(cmd_buf,*indices_buffer,render_obj->GetIndexOffset(),indices_buffer->GetType());
|
vkCmdBindIndexBuffer(cmd_buf,indices_buffer->GetBuffer(),render_obj->GetIndexOffset(),indices_buffer->GetType());
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,10 @@ class DescriptorSetLayoutCreater
|
|||||||
Device *device;
|
Device *device;
|
||||||
|
|
||||||
List<VkDescriptorSetLayoutBinding> layout_binding_list;
|
List<VkDescriptorSetLayoutBinding> layout_binding_list;
|
||||||
VkDescriptorSetLayout dsl=nullptr;
|
VkDescriptorSetLayout dsl=VK_NULL_HANDLE;
|
||||||
Map<uint32_t,int> index_by_binding;
|
Map<uint32_t,int> index_by_binding;
|
||||||
|
|
||||||
VkPipelineLayout pipeline_layout=nullptr;
|
VkPipelineLayout pipeline_layout=VK_NULL_HANDLE;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include<hgl/graph/vulkan/VKDescriptorSets.h>
|
#include<hgl/graph/vulkan/VKDescriptorSets.h>
|
||||||
#include<hgl/graph/vulkan/VKDevice.h>
|
#include<hgl/graph/vulkan/VKDevice.h>
|
||||||
|
#include<hgl/graph/vulkan/VKBuffer.h>
|
||||||
#include<hgl/graph/vulkan/VKTexture.h>
|
#include<hgl/graph/vulkan/VKTexture.h>
|
||||||
#include<hgl/graph/vulkan/VKSampler.h>
|
#include<hgl/graph/vulkan/VKSampler.h>
|
||||||
|
|
||||||
@ -10,7 +11,7 @@ void DescriptorSets::Clear()
|
|||||||
desc_image_info.ClearData();
|
desc_image_info.ClearData();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DescriptorSets::BindUBO(const uint32_t binding,const VkDescriptorBufferInfo *buf_info)
|
bool DescriptorSets::BindUBO(const uint32_t binding,const Buffer *buf)
|
||||||
{
|
{
|
||||||
VkWriteDescriptorSet writeDescriptorSet;
|
VkWriteDescriptorSet writeDescriptorSet;
|
||||||
|
|
||||||
@ -22,14 +23,14 @@ bool DescriptorSets::BindUBO(const uint32_t binding,const VkDescriptorBufferInfo
|
|||||||
writeDescriptorSet.descriptorCount = 1;
|
writeDescriptorSet.descriptorCount = 1;
|
||||||
writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
||||||
writeDescriptorSet.pImageInfo = nullptr;
|
writeDescriptorSet.pImageInfo = nullptr;
|
||||||
writeDescriptorSet.pBufferInfo = buf_info;
|
writeDescriptorSet.pBufferInfo = buf->GetBufferInfo();
|
||||||
writeDescriptorSet.pTexelBufferView = nullptr;
|
writeDescriptorSet.pTexelBufferView = nullptr;
|
||||||
|
|
||||||
write_desc_sets.Add(writeDescriptorSet);
|
write_desc_sets.Add(writeDescriptorSet);
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DescriptorSets::BindUBODynamic(const uint32_t binding,const VkDescriptorBufferInfo *buf_info)
|
bool DescriptorSets::BindUBODynamic(const uint32_t binding,const Buffer *buf)
|
||||||
{
|
{
|
||||||
VkWriteDescriptorSet writeDescriptorSet;
|
VkWriteDescriptorSet writeDescriptorSet;
|
||||||
|
|
||||||
@ -41,7 +42,7 @@ bool DescriptorSets::BindUBODynamic(const uint32_t binding,const VkDescriptorBuf
|
|||||||
writeDescriptorSet.descriptorCount = 1;
|
writeDescriptorSet.descriptorCount = 1;
|
||||||
writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
|
writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
|
||||||
writeDescriptorSet.pImageInfo = nullptr;
|
writeDescriptorSet.pImageInfo = nullptr;
|
||||||
writeDescriptorSet.pBufferInfo = buf_info;
|
writeDescriptorSet.pBufferInfo = buf->GetBufferInfo();;
|
||||||
writeDescriptorSet.pTexelBufferView = nullptr;
|
writeDescriptorSet.pTexelBufferView = nullptr;
|
||||||
|
|
||||||
write_desc_sets.Add(writeDescriptorSet);
|
write_desc_sets.Add(writeDescriptorSet);
|
||||||
@ -54,8 +55,8 @@ bool DescriptorSets::BindSampler(const uint32_t binding,Texture *tex,Sampler *sa
|
|||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
VkDescriptorImageInfo *image_info=desc_image_info.Add();
|
VkDescriptorImageInfo *image_info=desc_image_info.Add();
|
||||||
image_info->imageView =*tex;
|
image_info->imageView =tex->GetVulkanImageView();
|
||||||
image_info->imageLayout =*tex;
|
image_info->imageLayout =tex->GetImageLayout();
|
||||||
image_info->sampler =*sampler;
|
image_info->sampler =*sampler;
|
||||||
|
|
||||||
VkWriteDescriptorSet writeDescriptorSet;
|
VkWriteDescriptorSet writeDescriptorSet;
|
||||||
|
@ -81,7 +81,7 @@ void Device::RecreateDevice()
|
|||||||
|
|
||||||
for(uint i=0;i<swap_chain_count;i++)
|
for(uint i=0;i<swap_chain_count;i++)
|
||||||
{
|
{
|
||||||
render_frame.Add(vulkan::CreateFramebuffer(this,main_rp,*attr->sc_texture[i],*attr->sc_depth));
|
render_frame.Add(vulkan::CreateFramebuffer(this,main_rp,attr->sc_texture[i]->GetImageView(),attr->sc_depth->GetImageView()));
|
||||||
fence_list.Add(this->CreateFence(true));
|
fence_list.Add(this->CreateFence(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ void DeviceAttribute::ClearSwapchain()
|
|||||||
if(swap_chain)
|
if(swap_chain)
|
||||||
{
|
{
|
||||||
vkDestroySwapchainKHR(device,swap_chain,nullptr);
|
vkDestroySwapchainKHR(device,swap_chain,nullptr);
|
||||||
swap_chain=nullptr;
|
swap_chain=VK_NULL_HANDLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace
|
|||||||
|
|
||||||
Memory *dm=CreateMemory(rsa->device,rsa->physical_device,mem_reqs,VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
|
Memory *dm=CreateMemory(rsa->device,rsa->physical_device,mem_reqs,VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
|
||||||
|
|
||||||
if(dm&&dm->Bind(vb.buffer))
|
if(dm&&dm->BindBuffer(vb.buffer))
|
||||||
{
|
{
|
||||||
vb.info.buffer =vb.buffer;
|
vb.info.buffer =vb.buffer;
|
||||||
vb.info.offset =0;
|
vb.info.offset =0;
|
||||||
|
@ -93,7 +93,7 @@ namespace
|
|||||||
if(vkCreateCommandPool(device,&cmd_pool_info,nullptr,&cmd_pool)==VK_SUCCESS)
|
if(vkCreateCommandPool(device,&cmd_pool_info,nullptr,&cmd_pool)==VK_SUCCESS)
|
||||||
return cmd_pool;
|
return cmd_pool;
|
||||||
|
|
||||||
return(nullptr);
|
return(VK_NULL_HANDLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VkSwapchainKHR CreateSwapChain(DeviceAttribute *rsa)
|
VkSwapchainKHR CreateSwapChain(DeviceAttribute *rsa)
|
||||||
@ -136,15 +136,15 @@ namespace
|
|||||||
if(vkCreateSwapchainKHR(rsa->device,&swapchain_ci,nullptr,&swap_chain)==VK_SUCCESS)
|
if(vkCreateSwapchainKHR(rsa->device,&swapchain_ci,nullptr,&swap_chain)==VK_SUCCESS)
|
||||||
return(swap_chain);
|
return(swap_chain);
|
||||||
|
|
||||||
return(nullptr);
|
return(VK_NULL_HANDLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageView *Create2DImageView(VkDevice device,VkFormat format,VkImage img=nullptr)
|
ImageView *Create2DImageView(VkDevice device,VkFormat format,VkImage img=VK_NULL_HANDLE)
|
||||||
{
|
{
|
||||||
return CreateImageView(device,VK_IMAGE_VIEW_TYPE_2D,format,VK_IMAGE_ASPECT_COLOR_BIT,img);
|
return CreateImageView(device,VK_IMAGE_VIEW_TYPE_2D,format,VK_IMAGE_ASPECT_COLOR_BIT,img);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageView *CreateDepthImageView(VkDevice device,VkFormat format,VkImage img=nullptr)
|
ImageView *CreateDepthImageView(VkDevice device,VkFormat format,VkImage img=VK_NULL_HANDLE)
|
||||||
{
|
{
|
||||||
return CreateImageView(device,VK_IMAGE_VIEW_TYPE_2D,format,VK_IMAGE_ASPECT_DEPTH_BIT,img);
|
return CreateImageView(device,VK_IMAGE_VIEW_TYPE_2D,format,VK_IMAGE_ASPECT_DEPTH_BIT,img);
|
||||||
}
|
}
|
||||||
@ -224,7 +224,7 @@ namespace
|
|||||||
VkDescriptorPool desc_pool;
|
VkDescriptorPool desc_pool;
|
||||||
|
|
||||||
if(vkCreateDescriptorPool(device,&dp_create_info,nullptr,&desc_pool)!=VK_SUCCESS)
|
if(vkCreateDescriptorPool(device,&dp_create_info,nullptr,&desc_pool)!=VK_SUCCESS)
|
||||||
return(nullptr);
|
return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
return desc_pool;
|
return desc_pool;
|
||||||
}
|
}
|
||||||
@ -241,7 +241,7 @@ namespace
|
|||||||
VkPipelineCache cache;
|
VkPipelineCache cache;
|
||||||
|
|
||||||
if(vkCreatePipelineCache(device, &pipelineCache, nullptr, &cache)!=VK_SUCCESS)
|
if(vkCreatePipelineCache(device, &pipelineCache, nullptr, &cache)!=VK_SUCCESS)
|
||||||
return(nullptr);
|
return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
return cache;
|
return cache;
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ bool Device::ChangeTexture2D(Texture2D *tex,Buffer *buf,uint32_t left,uint32_t t
|
|||||||
imageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
imageMemoryBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||||
imageMemoryBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
imageMemoryBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||||
imageMemoryBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
imageMemoryBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||||
imageMemoryBarrier.image = *tex;
|
imageMemoryBarrier.image = tex->GetImage();
|
||||||
imageMemoryBarrier.subresourceRange = subresourceRange;
|
imageMemoryBarrier.subresourceRange = subresourceRange;
|
||||||
|
|
||||||
texture_cmd_buf->Begin();
|
texture_cmd_buf->Begin();
|
||||||
@ -108,8 +108,8 @@ bool Device::ChangeTexture2D(Texture2D *tex,Buffer *buf,uint32_t left,uint32_t t
|
|||||||
1, &imageMemoryBarrier);
|
1, &imageMemoryBarrier);
|
||||||
|
|
||||||
texture_cmd_buf->CopyBufferToImage(
|
texture_cmd_buf->CopyBufferToImage(
|
||||||
*buf,
|
buf->GetBuffer(),
|
||||||
*tex,
|
tex->GetImage(),
|
||||||
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||||
1,
|
1,
|
||||||
&buffer_image_copy);
|
&buffer_image_copy);
|
||||||
|
@ -205,7 +205,7 @@ Instance::Instance(VkInstance i,CharPointerList &el)
|
|||||||
debug_out(extension_properties);
|
debug_out(extension_properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
debug_report_callback=nullptr;
|
debug_report_callback=VK_NULL_HANDLE;
|
||||||
{
|
{
|
||||||
VkDebugReportCallbackCreateInfoEXT create_info={};
|
VkDebugReportCallbackCreateInfoEXT create_info={};
|
||||||
|
|
||||||
@ -218,7 +218,7 @@ Instance::Instance(VkInstance i,CharPointerList &el)
|
|||||||
CreateDebugReportCallbackEXT(inst,&create_info,nullptr,&debug_report_callback);
|
CreateDebugReportCallbackEXT(inst,&create_info,nullptr,&debug_report_callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
debug_messenger=nullptr;
|
debug_messenger=VK_NULL_HANDLE;
|
||||||
{
|
{
|
||||||
VkDebugUtilsMessengerCreateInfoEXT createInfo={};
|
VkDebugUtilsMessengerCreateInfoEXT createInfo={};
|
||||||
createInfo.sType=VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
|
createInfo.sType=VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
|
||||||
|
@ -70,14 +70,14 @@ bool Memory::Write(const void *ptr,VkDeviceSize start,VkDeviceSize size)
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Memory::Bind(VkBuffer buffer)
|
bool Memory::BindBuffer(VkBuffer buffer)
|
||||||
{
|
{
|
||||||
if(!buffer)return(false);
|
if(!buffer)return(false);
|
||||||
|
|
||||||
return(vkBindBufferMemory(device,buffer,memory,0)==VK_SUCCESS);
|
return(vkBindBufferMemory(device,buffer,memory,0)==VK_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Memory::Bind(VkImage image)
|
bool Memory::BindImage(VkImage image)
|
||||||
{
|
{
|
||||||
if(!image)return(false);
|
if(!image)return(false);
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ bool Renderable::Set(const int stage_input_binding,VertexBuffer *vbo,VkDeviceSiz
|
|||||||
|
|
||||||
//format信息来自于shader,实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance,不同的格式又需要不同的pipeline,我们不支持这种行为
|
//format信息来自于shader,实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance,不同的格式又需要不同的pipeline,我们不支持这种行为
|
||||||
|
|
||||||
buf_list[stage_input_binding]=*vbo;
|
buf_list[stage_input_binding]=vbo->GetBuffer();
|
||||||
buf_offset[stage_input_binding]=offset;
|
buf_offset[stage_input_binding]=offset;
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
|
@ -75,7 +75,7 @@ Texture2D *CreateTexture2D(VkDevice device,const PhysicalDevice *pd,const VkForm
|
|||||||
|
|
||||||
Memory *dm=CreateMemory(device,pd,memReqs,VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
|
Memory *dm=CreateMemory(device,pd,memReqs,VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
|
||||||
|
|
||||||
if(dm&&dm->Bind(image))
|
if(dm&&dm->BindImage(image))
|
||||||
{
|
{
|
||||||
ImageView *image_view=CreateImageView2D(device,format,aspectMask,image);
|
ImageView *image_view=CreateImageView2D(device,format,aspectMask,image);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user