added little codes of texture 2d array, but can't run.

This commit is contained in:
2023-09-25 16:38:02 +08:00
parent f901708b6c
commit 5230fbc27f
9 changed files with 53 additions and 13 deletions

View File

@@ -207,7 +207,7 @@ namespace hgl
{
protected: // override functions
uint32 GetPixelsCount()const override{return file_header.length;}
uint32 GetPixelsCount()const override{return file_header.length*file_header.layers;}
uint32 GetTotalBytes()const override
{
if(file_header.mipmaps<=1)
@@ -230,7 +230,7 @@ namespace hgl
{
protected: // override functions
uint32 GetPixelsCount()const override{return file_header.width*file_header.height;}
uint32 GetPixelsCount()const override{return file_header.width*file_header.height*file_header.layers;}
uint32 GetTotalBytes()const override
{
if(file_header.mipmaps<=1)

View File

@@ -180,6 +180,9 @@ public: //Texture
Texture2D *CreateTexture2D(TextureData *);
Texture2D *CreateTexture2D(TextureCreateInfo *ci);
Texture2DArray *CreateTexture2DArray(TextureData *);
Texture2DArray *CreateTexture2DArray(TextureCreateInfo *ci);
TextureCube *CreateTextureCube(TextureData *);
TextureCube *CreateTextureCube(TextureCreateInfo *ci);

View File

@@ -63,8 +63,8 @@ class Texture2D:public Texture
{
public:
Texture2D(VkDevice dev,TextureData *td):Texture(dev,td){}
~Texture2D()=default;
using Texture::Texture;
virtual ~Texture2D()=default;
static VkImageViewType GetImageViewType(){return VK_IMAGE_VIEW_TYPE_2D;}
@@ -72,10 +72,19 @@ public:
const uint32_t GetHeight()const{return data?data->image_view->GetExtent().height:0;}
};//class Texture2D:public Texture
//class Texture2DArray:public Texture
//{
// uint32_t width,height,count;
//};//class Texture2DArray:public Texture
class Texture2DArray:public Texture
{
public:
using Texture::Texture;
virtual ~Texture2DArray()=default;
static VkImageViewType GetImageViewType(){return VK_IMAGE_VIEW_TYPE_2D_ARRAY;}
const uint32_t GetWidth ()const{return data?data->image_view->GetExtent().width:0;}
const uint32_t GetHeight()const{return data?data->image_view->GetExtent().height:0;}
const uint32_t GetLayer ()const{return data?data->image_view->GetExtent().depth:0;}
};//class Texture2DArray:public Texture
//class Texture3D:public Texture
//{

View File

@@ -20,13 +20,13 @@ struct TextureCreateInfo
VkImageLayout image_layout;
VkImage image; //如果没有IMAGE则创建。交换链等会直接提供image所以存在外部传入现像)
DeviceMemory * memory; //同时需分配内存并绑定
DeviceMemory * memory; //同时需分配内存并绑定
ImageView * image_view; //如果没有imageview则创建
void * pixels; //如果没有buffer但有pixels则根据pixels和以上条件创建buffer
VkDeviceSize total_bytes;
DeviceBuffer * buffer; //如果pixels也没有则代表不会立即写入图像数据
DeviceBuffer * buffer; //如果pixels也没有则代表不会立即写入图像数据
public: