Change the params name of VKPhysicalDevice::GetPointSize

This commit is contained in:
hyzboy 2020-06-21 17:48:50 +08:00
parent 0cb5c45d2a
commit 3e0a170505
2 changed files with 139 additions and 12 deletions

View File

@ -104,11 +104,11 @@ public:
const uint32_t GetMaxColorAttachments ()const{return properties.limits.maxColorAttachments;}
const void GetPointSize(float &granularity,float &min_point,float &max_point)
const void GetPointSize(float &granularity,float &min_size,float &max_size)
{
granularity =properties.limits.pointSizeGranularity;
min_point =properties.limits.pointSizeRange[0];
max_point =properties.limits.pointSizeRange[1];
min_size =properties.limits.pointSizeRange[0];
max_size =properties.limits.pointSizeRange[1];
}
const void GetLineWidth(float &granularity,float &min_width,float &max_width)

View File

@ -1,12 +1,16 @@
#include<hgl/graph/TileData.h>
#include<hgl/log/LogInfo.h>
#include<hgl/graph/vulkan/VKDevice.h>
#include<hgl/graph/vulkan/VKBuffer.h>
namespace hgl
{
namespace graph
{
TileData::TileData(Texture2D *tt,const uint tw,const uint th)
TileData::TileData(Device *dev,Texture2D *tt,const uint tw,const uint th)
{
device=dev;
tile_texture=tt;
tile_width=tw;
@ -19,10 +23,15 @@ namespace hgl
tile_count=0;
NEW_NULL_ARRAY(tile_object,TileData::Object *,tile_max_count);
tile_bytes=tile_width*tile_height*GetStrideByFormat(tile_texture->GetFormat());
tile_buffer=device->CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,tile_bytes,nullptr);
}
TileData::~TileData()
{
SAFE_CLEAR(tile_buffer);
SAFE_CLEAR(tile_texture);
SAFE_CLEAR_OBJECT_ARRAY(tile_object,tile_max_count);
}
@ -42,7 +51,7 @@ namespace hgl
return(-1);
}
void TileData::WriteTile(int index,TileData::Object *obj,void *data,uint bytes,VkFormat format,int ctw,int cth)
void TileData::WriteTile(const int index,TileData::Object *obj,const void *data,const uint bytes,const VkFormat format,int ctw,int cth)
{
int col,row;
double left,top;
@ -65,13 +74,15 @@ namespace hgl
tile_object[index]=obj;
//tile_texture->ChangeImage( left,
// top,
// tile_width,
// tile_height,
// data,
// bytes,
// format);
tile_buffer->Write(data,0,bytes);
device->ChangeTexture2D(tile_texture,
tile_buffer,
left,
top,
tile_width,
tile_height);
//请保留这段代码,以便未来使用时该数据时不会使用
//{
// vertex->Begin(index*6);
@ -84,5 +95,121 @@ namespace hgl
// vertex->End();
//}
}
/**
* Tile
* @param data
* @param bytes
* @param format
* @param ctw tile宽度,-1
* @param cth tile高度,-1
* @return Tile创建的对象
*/
TileData::Object *TileData::Add(const void *data,const uint bytes,const VkFormat format,const int ctw,const int cth)
{
if(!tile_object)return(nullptr);
int index;
index=FindSpace();
if(index==-1)
{
LOG_PROBLEM(OS_TEXT("找不到空的Tile数据区!"));
return(nullptr);
}
TileData::Object *obj=new TileData::Object;
WriteTile(index,obj,data,bytes,format,ctw,cth);
tile_count++;
return(obj);
}
/**
* Tile
* @param obj Tile的对象指针
* @return
*/
bool TileData::Delete(TileData::Object *obj)
{
if(!tile_object)return(false);
if(tile_object[obj->index])
{
if(tile_object[obj->index]!=obj)
{
LOG_PROBLEM(OS_TEXT("要删除的TileData::Object和TileData中的不对应"));
return(false);
}
else
{
tile_object[obj->index]=nullptr;
tile_count--;
delete obj;
return(true);
}
}
else
{
LOG_PROBLEM(OS_TEXT("要删除的TileData::Object对象在TileData中不存在"));
return(false);
}
}
/**
* Tile的数据内容
* @param obj Tile的对象指针
* @param data
* @param bytes
* @param format
* @param ctw tile宽度,-1
* @param cth tile高度,-1
* @return
*/
bool TileData::Change(TileData::Object *obj,const void *data,const uint bytes,const VkFormat format,const int ctw,const int cth)
{
if(!tile_object)return(false);
if(tile_object[obj->index])
{
if(tile_object[obj->index]!=obj)
{
LOG_PROBLEM(OS_TEXT("要更改的TileData::Object和TileData中的不对应"));
return(false);
}
else
{
WriteTile(obj->index,obj,data,bytes,format,ctw,cth);
return(true);
}
}
else
{
LOG_PROBLEM(OS_TEXT("要更改的TileData::Object对象在TileData中不存在"));
return(false);
}
}
/**
* Tile数据
*/
void TileData::Clear()
{
if(!tile_object)return;
int n=tile_max_count;
while(n--)
if(tile_object[n])
{
delete tile_object[n];
tile_object[n]=nullptr;
}
}
}//namespace graph
}//namespace hgl