added codes about Texture2DArray.
This commit is contained in:
parent
22099b6b84
commit
7d9192051a
@ -20,6 +20,8 @@ CreateProject("Basic" 04_auto_merge_material_instance fourth_triangle.cpp)
|
|||||||
CreateProject("Texture" 05_texture_format TextureFormat.cpp)
|
CreateProject("Texture" 05_texture_format TextureFormat.cpp)
|
||||||
CreateProject("Texture" 06_texture_quad texture_quad.cpp)
|
CreateProject("Texture" 06_texture_quad texture_quad.cpp)
|
||||||
CreateProject("Texture" 07_texture_rect texture_rect.cpp)
|
CreateProject("Texture" 07_texture_rect texture_rect.cpp)
|
||||||
|
CreateProject("Texture" 08_texture_rect_array texture_rect_array.cpp)
|
||||||
|
|
||||||
#CreateProject("Texture" HQFilterTexture HQFilterTexture.cpp)
|
#CreateProject("Texture" HQFilterTexture HQFilterTexture.cpp)
|
||||||
#CreateProject(06.Geometry2D Geometry2D.cpp)
|
#CreateProject(06.Geometry2D Geometry2D.cpp)
|
||||||
|
|
||||||
|
@ -30,6 +30,19 @@ public:
|
|||||||
SetRectScope(rs);
|
SetRectScope(rs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BufferImageCopy(const Texture2DArray *tex):BufferImageCopy()
|
||||||
|
{
|
||||||
|
imageSubresource.aspectMask=tex->GetAspect();
|
||||||
|
SetRectScope(tex->GetWidth(),tex->GetHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
BufferImageCopy(const Texture2DArray *tex,const RectScope2<T> &rs):BufferImageCopy()
|
||||||
|
{
|
||||||
|
imageSubresource.aspectMask=tex->GetAspect();
|
||||||
|
SetRectScope(rs);
|
||||||
|
}
|
||||||
|
|
||||||
BufferImageCopy(const TextureCube *tex):BufferImageCopy()
|
BufferImageCopy(const TextureCube *tex):BufferImageCopy()
|
||||||
{
|
{
|
||||||
imageSubresource.aspectMask=tex->GetAspect();
|
imageSubresource.aspectMask=tex->GetAspect();
|
||||||
|
@ -164,7 +164,7 @@ Texture2DArray *GPUDevice::CreateTexture2DArray(const uint32_t w,const uint32_t
|
|||||||
// return CopyBufferToImageArray(tex,buf,buffer_image_copy,miplevel,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
// return CopyBufferToImageArray(tex,buf,buffer_image_copy,miplevel,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
|
||||||
//}
|
//}
|
||||||
//
|
//
|
||||||
//bool GPUDevice::ChangeTexture2DArray(Texture2DArray *tex,DeviceBuffer *buf,const List<Image2DRegion> &ir_list,VkPipelineStageFlags destinationStage)
|
//bool GPUDevice::ChangeTexture2DArray(Texture2DArray *tex,DeviceBuffer *buf,const List<Image2DRegion> &ir_list,const uint32_t base_layer,const uint32_t layer_count,VkPipelineStageFlags destinationStage)
|
||||||
//{
|
//{
|
||||||
// if(!tex||!buf||ir_list.GetCount()<=0)
|
// if(!tex||!buf||ir_list.GetCount()<=0)
|
||||||
// return(false);
|
// return(false);
|
||||||
@ -184,8 +184,8 @@ Texture2DArray *GPUDevice::CreateTexture2DArray(const uint32_t w,const uint32_t
|
|||||||
// tp->bufferImageHeight = 0;
|
// tp->bufferImageHeight = 0;
|
||||||
// tp->imageSubresource.aspectMask = tex->GetAspect();
|
// tp->imageSubresource.aspectMask = tex->GetAspect();
|
||||||
// tp->imageSubresource.mipLevel = 0;
|
// tp->imageSubresource.mipLevel = 0;
|
||||||
// tp->imageSubresource.baseArrayLayer = 0;
|
// tp->imageSubresource.baseArrayLayer = base_layer;
|
||||||
// tp->imageSubresource.layerCount = 1;
|
// tp->imageSubresource.layerCount = layer_count;
|
||||||
// tp->imageOffset.x = sp.left;
|
// tp->imageOffset.x = sp.left;
|
||||||
// tp->imageOffset.y = sp.top;
|
// tp->imageOffset.y = sp.top;
|
||||||
// tp->imageOffset.z = 0;
|
// tp->imageOffset.z = 0;
|
||||||
@ -203,40 +203,44 @@ Texture2DArray *GPUDevice::CreateTexture2DArray(const uint32_t w,const uint32_t
|
|||||||
// SubmitTexture(*texture_cmd_buf);
|
// SubmitTexture(*texture_cmd_buf);
|
||||||
// return result;
|
// return result;
|
||||||
//}
|
//}
|
||||||
//
|
|
||||||
//bool GPUDevice::ChangeTexture2DArray(Texture2DArray *tex,DeviceBuffer *buf,const RectScope2ui &scope,VkPipelineStageFlags destinationStage)
|
bool GPUDevice::ChangeTexture2DArray(Texture2DArray *tex,DeviceBuffer *buf,const RectScope2ui &scope,const uint32_t base_layer,const uint32_t layer_count,VkPipelineStageFlags destinationStage)
|
||||||
//{
|
{
|
||||||
// if(!tex||!buf
|
if(!tex||!buf
|
||||||
// ||scope.GetWidth()<=0
|
||base_layer<0
|
||||||
// ||scope.GetHeight()<=0
|
||layer_count<=0
|
||||||
// ||scope.GetRight()>tex->GetWidth()
|
||scope.GetWidth()<=0
|
||||||
// ||scope.GetBottom()>tex->GetHeight())
|
||scope.GetHeight()<=0
|
||||||
// return(false);
|
||scope.GetRight()>tex->GetWidth()
|
||||||
//
|
||scope.GetBottom()>tex->GetHeight())
|
||||||
// BufferImageCopy buffer_image_copy(tex,scope);
|
return(false);
|
||||||
//
|
|
||||||
// texture_cmd_buf->Begin();
|
BufferImageCopy buffer_image_copy(tex,scope);
|
||||||
// bool result=CopyBufferToImageArray(tex,buf,&buffer_image_copy,1,1,destinationStage);
|
|
||||||
// texture_cmd_buf->End();
|
texture_cmd_buf->Begin();
|
||||||
// SubmitTexture(*texture_cmd_buf);
|
bool result=CopyBufferToImage(tex,buf,&buffer_image_copy,1,base_layer,layer_count,destinationStage);
|
||||||
// return result;
|
texture_cmd_buf->End();
|
||||||
//}
|
SubmitTexture(*texture_cmd_buf);
|
||||||
//
|
return result;
|
||||||
//bool GPUDevice::ChangeTexture2DArray(Texture2DArray *tex,void *data,const uint32_t size,const RectScope2ui &scope,VkPipelineStageFlags destinationStage)
|
}
|
||||||
//{
|
|
||||||
// if(!tex||!data
|
bool GPUDevice::ChangeTexture2DArray(Texture2DArray *tex,void *data,const uint32_t size,const RectScope2ui &scope,const uint32_t base_layer,const uint32_t layer_count,VkPipelineStageFlags destinationStage)
|
||||||
// ||size<=0
|
{
|
||||||
// ||scope.GetWidth()<=0
|
if(!tex||!data
|
||||||
// ||scope.GetHeight()<=0
|
||size<=0
|
||||||
// ||scope.GetRight()>tex->GetWidth()
|
||base_layer<0
|
||||||
// ||scope.GetBottom()>tex->GetHeight())
|
||layer_count<=0
|
||||||
// return(false);
|
||scope.GetWidth()<=0
|
||||||
//
|
||scope.GetHeight()<=0
|
||||||
// DeviceBuffer *buf=CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,size,data);
|
||scope.GetRight()>tex->GetWidth()
|
||||||
//
|
||scope.GetBottom()>tex->GetHeight())
|
||||||
// bool result=ChangeTexture2DArray(tex,buf,scope,destinationStage);
|
return(false);
|
||||||
//
|
|
||||||
// delete buf;
|
DeviceBuffer *buf=CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,size,data);
|
||||||
// return(result);
|
|
||||||
//}
|
bool result=ChangeTexture2DArray(tex,buf,scope,base_layer,layer_count,destinationStage);
|
||||||
|
|
||||||
|
delete buf;
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
Loading…
x
Reference in New Issue
Block a user