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