VKDevice::ChangeTexture2D add batch commit edition.

This commit is contained in:
2020-07-29 17:06:43 +08:00
parent 093fa93825
commit 3dbddbeb9a
8 changed files with 179 additions and 49 deletions

View File

@@ -16,7 +16,7 @@ namespace hgl
{
int col,row; //当前tile在整个纹理中的tile位置
RectScope2d uv_pixel; //以象素为单位的tile位置和尺寸
RectScope2i uv_pixel; //以象素为单位的tile位置和尺寸
RectScope2d uv_float; //以浮点为单位的tile位置和尺寸
};//struct TileObject
@@ -30,20 +30,26 @@ namespace hgl
protected:
vulkan::Buffer *tile_buffer; ///<Tile暂存缓冲区
uint pixel_bytes; ///<单个象素字节数
Texture2D *tile_texture; ///<TileData所用的纹理对象
ObjectPool<TileObject> to_pool; ///<Tile对象池
uint tile_width,tile_height; ///<Tile的宽和高
uint32_t tile_bytes; ///<一个tile字节数
uint tile_bytes; ///<一个tile字节数
uint tile_count,tile_max_count; ///<当前Tile数量与最大数量
uint tile_rows,tile_cols; ///<贴图中可用的Tile行数和列数
protected:
bool WriteTile(TileObject *,const void *,const uint,const int,const int); ///<写入一个Tile数据
vulkan::Buffer *tile_buffer; ///<Tile暂存缓冲区
List<ImageRegion> commit_list;
uint commit_offset;
uint8 *commit_ptr;
bool CommitTile(TileObject *,const void *,const uint,const int,const int); ///<提交一个Tile数据
public:
@@ -60,11 +66,15 @@ namespace hgl
TileData(Device *,Texture2D *,const uint tw,const uint th);
virtual ~TileData();
TileObject *Add(const void *,const uint,const int=-1,const int=-1); ///<增加一个Tile
TileObject *Add(BitmapData *bmp){return this->Add(bmp->data,bmp->total_bytes,bmp->width,bmp->height);} ///<增加一个Tile
void BeginCommit();
TileObject *Commit(const void *,const uint,const int=-1,const int=-1); ///<提交一个Tile
TileObject *Commit(BitmapData *bmp){return this->Commit(bmp->data,bmp->total_bytes,bmp->width,bmp->height);}///<提交一个Tile
bool Change(TileObject *,const void *,const uint,const int=-1,const int=-1); ///<更改一个Tile的数据内容
int EndCommit();
bool Delete(TileObject *); ///<删除一个Tile
bool Change(TileObject *,const void *,const uint,const int=-1,const int=-1); ///<更改一个Tile的数据内容
void Clear(); ///<清除Tile数据
};//class TileData
}//namespace graph