use Prim instead macros.

use IndexType instead VkIndexType
This commit is contained in:
hyzboy 2020-09-02 19:06:12 +08:00
parent 1e6e0e305c
commit 3fd9d1535d
25 changed files with 95 additions and 83 deletions

View File

@ -92,7 +92,7 @@ private:
pipeline_creater->SetDepthTest(true);
pipeline_creater->SetDepthWrite(true);
pipeline_creater->SetCullMode(VK_CULL_MODE_NONE);
pipeline_creater->Set(PRIM_TRIANGLES);
pipeline_creater->Set(Prim::Triangles);
pipeline_solid=pipeline_creater->Create();
if(!pipeline_solid)

View File

@ -108,7 +108,7 @@ private:
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->CloseCullFace();
pipeline_creater->Set(PRIM_RECTANGLES);
pipeline_creater->Set(Prim::Rectangles);
pipeline=pipeline_creater->Create();

View File

@ -204,7 +204,7 @@ private:
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->CloseCullFace();
pipeline_creater->Set(PRIM_RECTANGLES);
pipeline_creater->Set(Prim::Rectangles);
pipeline=pipeline_creater->Create();

View File

@ -133,7 +133,7 @@ private:
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->CloseCullFace();
pipeline_creater->Set(PRIM_TRIANGLE_FAN);
pipeline_creater->Set(Prim::Fan);
pipeline=pipeline_creater->Create();
if(!pipeline)return(false);

View File

@ -59,7 +59,7 @@ private:
return(true);
}
bool InitPipeline(MDP *mdp,const VkPrimitiveTopology primitive)
bool InitPipeline(MDP *mdp,const Prim primitive)
{
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,mdp->material,sc_render_target);
@ -75,7 +75,7 @@ private:
return(true);
}
bool InitMDP(MDP *mdp,const VkPrimitiveTopology primitive,const OSString &vs,const OSString &fs)
bool InitMDP(MDP *mdp,const Prim primitive,const OSString &vs,const OSString &fs)
{
if(!InitMaterial(mdp,vs,fs))
return(false);
@ -152,11 +152,11 @@ public:
if(!CameraAppFramework::Init(SCREEN_WIDTH,SCREEN_HEIGHT))
return(false);
if(!InitMDP(&m3d,PRIM_LINES,OS_TEXT("res/shader/PositionColor3D.vert"),
if(!InitMDP(&m3d,Prim::Lines,OS_TEXT("res/shader/PositionColor3D.vert"),
OS_TEXT("res/shader/VertexColor.frag")))
return(false);
if(!InitMDP(&m2d,PRIM_TRIANGLE_FAN, OS_TEXT("res/shader/OnlyPosition.vert"),
if(!InitMDP(&m2d,Prim::Fan, OS_TEXT("res/shader/OnlyPosition.vert"),
OS_TEXT("res/shader/FlatColor.frag")))
return(false);

View File

@ -155,7 +155,7 @@ private:
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,mpd->material,sc_render_target);
pipeline_creater->CloseCullFace();
pipeline_creater->Set(PRIM_TRIANGLES);
pipeline_creater->Set(Prim::Triangles);
mpd->pipeline=pipeline_creater->Create();

View File

@ -149,7 +149,7 @@ private:
{
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->Set(PRIM_LINES);
pipeline_creater->Set(Prim::Lines);
pipeline_line=pipeline_creater->Create();
@ -158,7 +158,7 @@ private:
db->Add(pipeline_line);
pipeline_creater->Set(PRIM_TRIANGLES);
pipeline_creater->Set(Prim::Triangles);
pipeline_creater->SetPolygonMode(VK_POLYGON_MODE_FILL);
pipeline_solid=pipeline_creater->Create();

View File

@ -272,11 +272,11 @@ public:
if(!CameraAppFramework::Init(SCREEN_WIDTH,SCREEN_HEIGHT))//,model_data->bounding_box))
return(false);
if(!InitMP(&mp_solid, PRIM_TRIANGLES, OS_TEXT("res/shader/pbr_Light.vert"),
if(!InitMP(&mp_solid, Prim::Triangles, OS_TEXT("res/shader/pbr_Light.vert"),
OS_TEXT("res/shader/pbr_DirectionLight.frag")))
return(false);
if(!InitMP(&mp_line, PRIM_LINES, OS_TEXT("res/shader/PositionColor3D.vert"),
if(!InitMP(&mp_line, Prim::Lines, OS_TEXT("res/shader/PositionColor3D.vert"),
OS_TEXT("res/shader/VertexColor.frag")))
return(false);

View File

@ -105,7 +105,7 @@ private:
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->CloseCullFace();
pipeline_creater->Set(PRIM_RECTANGLES);
pipeline_creater->Set(Prim::Rectangles);
pipeline=pipeline_creater->Create();

View File

@ -104,7 +104,7 @@ private:
pipeline_creater->SetDepthWrite(true);
pipeline_creater->CloseCullFace();
pipeline_creater->SetPolygonMode(VK_POLYGON_MODE_FILL);
pipeline_creater->Set(PRIM_TRIANGLES);
pipeline_creater->Set(Prim::Triangles);
pipeline_line=pipeline_creater->Create();
if(!pipeline_line)

View File

@ -63,7 +63,7 @@ protected:
protected:
Database * db =nullptr;
vulkan::Database * db =nullptr;
bool key_status[kbRangeSize];
@ -127,7 +127,7 @@ public:
render_complete_semaphore =device->CreateSem();
shader_manage=device->CreateShaderModuleManage();
db=new Database(device);
db=new vulkan::Database(device);
InitCommandBuffer();

View File

@ -110,7 +110,7 @@ private:
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->CloseCullFace();
pipeline_creater->Set(PRIM_TRIANGLES);
pipeline_creater->Set(Prim::Triangles);
SaveToFile(PIPELINE_FILENAME,pipeline_creater);
}

View File

@ -111,7 +111,7 @@ private:
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->CloseCullFace();
pipeline_creater->Set(PRIM_TRIANGLES);
pipeline_creater->Set(Prim::Triangles);
pipeline=pipeline_creater->Create();

View File

@ -133,7 +133,7 @@ private:
AutoDelete<vulkan::PipelineCreater>
pipeline_creater=new vulkan::PipelineCreater(device,material,sc_render_target);
pipeline_creater->CloseCullFace();
pipeline_creater->Set(PRIM_TRIANGLES);
pipeline_creater->Set(Prim::Triangles);
pipeline=pipeline_creater->Create();

View File

@ -9,8 +9,6 @@ namespace hgl
{
namespace graph
{
class Database;
/**
* (/)
*/
@ -19,12 +17,12 @@ namespace hgl
RectScope2f scope;
};//struct RectangleCreateInfo
vulkan::Renderable *CreateRenderableRectangle(Database *db,vulkan::Material *mtl,const RectangleCreateInfo *rci);
vulkan::Renderable *CreateRenderableRectangle(vulkan::Database *db,vulkan::Material *mtl,const RectangleCreateInfo *rci);
/**
*
*/
vulkan::Renderable *CreateRenderableGBufferComposition(Database *db,vulkan::Material *mtl);
vulkan::Renderable *CreateRenderableGBufferComposition(vulkan::Database *db,vulkan::Material *mtl);
/**
* (/线)
@ -35,7 +33,7 @@ namespace hgl
uint32_t round_per; ///<圆角精度
};//struct RoundRectangleCreateInfo:public RectangleCreateInfo
vulkan::Renderable *CreateRenderableRoundRectangle(Database *db,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci);
vulkan::Renderable *CreateRenderableRoundRectangle(vulkan::Database *db,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci);
/**
*
@ -50,7 +48,7 @@ namespace hgl
/**
* 2D圆形(/线)
*/
vulkan::Renderable *CreateRenderableCircle(Database *db,vulkan::Material *mtl,const CircleCreateInfo *rci);
vulkan::Renderable *CreateRenderableCircle(vulkan::Database *db,vulkan::Material *mtl,const CircleCreateInfo *rci);
/**
*
@ -69,7 +67,7 @@ namespace hgl
/**
* (线)
*/
vulkan::Renderable *CreateRenderablePlaneGrid(Database *db,vulkan::Material *mtl,const PlaneGridCreateInfo *pgci);
vulkan::Renderable *CreateRenderablePlaneGrid(vulkan::Database *db,vulkan::Material *mtl,const PlaneGridCreateInfo *pgci);
struct PlaneCreateInfo
{
@ -86,7 +84,7 @@ namespace hgl
/**
* ()
*/
vulkan::Renderable *CreateRenderablePlane(Database *db,vulkan::Material *mtl,const PlaneCreateInfo *pci);
vulkan::Renderable *CreateRenderablePlane(vulkan::Database *db,vulkan::Material *mtl,const PlaneCreateInfo *pci);
struct CubeCreateInfo
{
@ -126,17 +124,17 @@ namespace hgl
/**
* ()
*/
vulkan::Renderable *CreateRenderableCube(Database *db,vulkan::Material *mtl,const CubeCreateInfo *cci);
vulkan::Renderable *CreateRenderableCube(vulkan::Database *db,vulkan::Material *mtl,const CubeCreateInfo *cci);
/**
* (线)
*/
vulkan::Renderable *CreateRenderableBoundingBox(Database *db,vulkan::Material *mtl,const CubeCreateInfo *cci);
vulkan::Renderable *CreateRenderableBoundingBox(vulkan::Database *db,vulkan::Material *mtl,const CubeCreateInfo *cci);
/**
* 0,0,01()
*/
vulkan::Renderable *CreateRenderableSphere(Database *db,vulkan::Material *mtl,const uint numberSlices);
vulkan::Renderable *CreateRenderableSphere(vulkan::Database *db,vulkan::Material *mtl,const uint numberSlices);
struct DomeCreateInfo
{
@ -147,7 +145,7 @@ namespace hgl
/**
* ()
*/
vulkan::Renderable *CreateRenderableDome(Database *db,vulkan::Material *mtl, const DomeCreateInfo *);
vulkan::Renderable *CreateRenderableDome(vulkan::Database *db,vulkan::Material *mtl, const DomeCreateInfo *);
struct TorusCreateInfo
{
@ -161,7 +159,7 @@ namespace hgl
/**
* ()
*/
vulkan::Renderable *CreateRenderableTorus(Database *db,vulkan::Material *mtl,const TorusCreateInfo *tci);
vulkan::Renderable *CreateRenderableTorus(vulkan::Database *db,vulkan::Material *mtl,const TorusCreateInfo *tci);
struct CylinderCreateInfo
{
@ -173,7 +171,7 @@ namespace hgl
/**
* ()
*/
vulkan::Renderable *CreateRenderableCylinder(Database *db,vulkan::Material *mtl,const CylinderCreateInfo *cci);
vulkan::Renderable *CreateRenderableCylinder(vulkan::Database *db,vulkan::Material *mtl,const CylinderCreateInfo *cci);
struct ConeCreateInfo
{
@ -186,7 +184,7 @@ namespace hgl
/**
* ()
*/
vulkan::Renderable *CreateRenderableCone(Database *db,vulkan::Material *mtl,const ConeCreateInfo *cci);
vulkan::Renderable *CreateRenderableCone(vulkan::Database *db,vulkan::Material *mtl,const ConeCreateInfo *cci);
struct AxisCreateInfo
{
@ -226,7 +224,7 @@ namespace hgl
/**
* 线(线)
*/
vulkan::Renderable *CreateRenderableAxis(Database *db,vulkan::Material *mtl,const AxisCreateInfo *aci);
vulkan::Renderable *CreateRenderableAxis(vulkan::Database *db,vulkan::Material *mtl,const AxisCreateInfo *aci);
}//namespace graph
};//namespace hgl
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE

View File

@ -61,6 +61,8 @@ class VertexAttributeBinding;
class Renderable;
class Database;
enum class SharingMode
{
Exclusive = 0,
@ -73,6 +75,12 @@ enum ImageTiling
Linear
};//
enum IndexType
{
U16=0,
U32
};
enum class ShaderStageBit
{
Vertex =VK_SHADER_STAGE_VERTEX_BIT,

View File

@ -82,14 +82,14 @@ using VAB=VertexAttribBuffer;
class IndexBuffer:public Buffer
{
VkIndexType index_type;
IndexType index_type;
uint32_t count;
private:
friend class Device;
IndexBuffer(VkDevice d,const BufferData &vb,VkIndexType it,uint32_t _count):Buffer(d,vb)
IndexBuffer(VkDevice d,const BufferData &vb,IndexType it,uint32_t _count):Buffer(d,vb)
{
index_type=it;
count=_count;
@ -99,7 +99,7 @@ public:
~IndexBuffer()=default;
const VkIndexType GetType ()const{return index_type;}
const IndexType GetType ()const{return index_type;}
const uint32 GetCount()const{return count;}
};//class IndexBuffer:public Buffer
VK_NAMESPACE_END

View File

@ -75,13 +75,13 @@ public: //Create
#undef SCENE_DB_CREATE_FUNC
IndexBuffer *CreateIBO(VkIndexType index_type,uint32_t count,const void *data,SharingMode sm=SharingMode::Exclusive);
IndexBuffer *CreateIBO16(uint32_t count,const uint16 *data,SharingMode sm=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sm);}
IndexBuffer *CreateIBO32(uint32_t count,const uint32 *data,SharingMode sm=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT32,count,(void *)data,sm);}
IndexBuffer *CreateIBO(IndexType index_type,uint32_t count,const void *data,SharingMode sm=SharingMode::Exclusive);
IndexBuffer *CreateIBO16(uint32_t count,const uint16 *data,SharingMode sm=SharingMode::Exclusive){return CreateIBO(IndexType::U16,count,(void *)data,sm);}
IndexBuffer *CreateIBO32(uint32_t count,const uint32 *data,SharingMode sm=SharingMode::Exclusive){return CreateIBO(IndexType::U32,count,(void *)data,sm);}
IndexBuffer *CreateIBO(VkIndexType index_type,uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(index_type,count,nullptr,sm);}
IndexBuffer *CreateIBO16(uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT16,count,nullptr,sm);}
IndexBuffer *CreateIBO32(uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT32,count,nullptr,sm);}
IndexBuffer *CreateIBO(IndexType index_type,uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(index_type,count,nullptr,sm);}
IndexBuffer *CreateIBO16(uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(IndexType::U16,count,nullptr,sm);}
IndexBuffer *CreateIBO32(uint32_t count,SharingMode sm=SharingMode::Exclusive){return CreateIBO(IndexType::U32,count,nullptr,sm);}
MaterialInstance * CreateMaterialInstance(Material *);
Renderable * CreateRenderable(Material *,const uint32_t vertex_count=0);

View File

@ -97,13 +97,13 @@ public: //Buffer相关
VAB * CreateVAB (VkFormat format,uint32_t count, SharingMode sharing_mode=SharingMode::Exclusive){return CreateVAB(format,count,nullptr,sharing_mode);}
VAB * CreateVAB (const VAD *vad, SharingMode sharing_mode=SharingMode::Exclusive){return CreateVAB(vad->GetVulkanFormat(),vad->GetCount(),vad->GetData(),sharing_mode);}
IndexBuffer * CreateIBO (VkIndexType index_type,uint32_t count,const void * data,SharingMode sharing_mode=SharingMode::Exclusive);
IndexBuffer * CreateIBO16 ( uint32_t count,const uint16 *data,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);}
IndexBuffer * CreateIBO32 ( uint32_t count,const uint32 *data,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT32,count,(void *)data,sharing_mode);}
IndexBuffer * CreateIBO (IndexType index_type,uint32_t count,const void * data,SharingMode sharing_mode=SharingMode::Exclusive);
IndexBuffer * CreateIBO16 ( uint32_t count,const uint16 *data,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(IndexType::U16,count,(void *)data,sharing_mode);}
IndexBuffer * CreateIBO32 ( uint32_t count,const uint32 *data,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(IndexType::U32,count,(void *)data,sharing_mode);}
IndexBuffer * CreateIBO (VkIndexType index_type,uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(index_type,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO16 ( uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT16,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO32 ( uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(VK_INDEX_TYPE_UINT32,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO (IndexType index_type,uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(index_type,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO16 ( uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(IndexType::U16,count,nullptr,sharing_mode);}
IndexBuffer * CreateIBO32 ( uint32_t count,SharingMode sharing_mode=SharingMode::Exclusive){return CreateIBO(IndexType::U32,count,nullptr,sharing_mode);}
#define CREATE_BUFFER_OBJECT(LargeName,type) Buffer *Create##LargeName(VkDeviceSize size,void *data,SharingMode sharing_mode=SharingMode::Exclusive){return CreateBuffer(VK_BUFFER_USAGE_##type##_BUFFER_BIT,size,data,sharing_mode);} \
Buffer *Create##LargeName(VkDeviceSize size,SharingMode sharing_mode=SharingMode::Exclusive){return CreateBuffer(VK_BUFFER_USAGE_##type##_BUFFER_BIT,size,nullptr,sharing_mode);}

View File

@ -78,10 +78,10 @@ class PipelineCreater
public:
PipelineCreater(Device *dev,const Material *,const RenderTarget *);
PipelineCreater(Device *dev,const Material *,const RenderTarget *,uchar *,uint);
PipelineCreater(Device *dev,const Material *,const RenderTarget *,uchar *data,uint size);
~PipelineCreater()=default;
bool Set(const uint prim,bool=false);
bool Set(const Prim prim,bool=false);
void SetViewport( float x,float y,float w,float h){viewport.x=x;viewport.y=y;viewport.width=w;viewport.height=h;}
void SetDepthRange( float min_depth,float max_depth){viewport.minDepth=min_depth;viewport.maxDepth=max_depth;}

View File

@ -1,22 +1,28 @@
#ifndef HGL_GRAPH_VULKAN_PRIMITIVE_INCLUDE
#define HGL_GRAPH_VULKAN_PRIMITIVE_INCLUDE
#include<vulkan/vulkan.h>
#include<hgl/TypeFunc.h>
#define PRIM_POINTS VK_PRIMITIVE_TOPOLOGY_POINT_LIST ///<点
#define PRIM_LINES VK_PRIMITIVE_TOPOLOGY_LINE_LIST ///<线
#define PRIM_LINE_STRIP VK_PRIMITIVE_TOPOLOGY_LINE_STRIP ///<连续线
#define PRIM_TRIANGLES VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ///<三角形
#define PRIM_TRIANGLE_STRIP VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ///<三角形条
#define PRIM_TRIANGLE_FAN VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ///<扇形
#define PRIM_LINES_ADJ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY ///<代表一个有四个顶点的Primitive,其中第二个点与第三个点会形成线段,而第一个点与第四个点则用来提供2,3邻近点的信息.
#define PRIM_LINE_STRIP_ADJ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY ///<与LINES_ADJACENCY类似,第一个点跟最后一个点提供信息,剩下的点则跟Line Strip一样形成线段.
#define PRIM_TRIANGLES_ADJ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY ///<代表一个有六个顶点的Primitive,其中第1,3,5个顶点代表一个Triangle,而地2,4,6个点提供邻近信息.(由1起算)
#define PRIM_TRIANGLE_STRIP_ADJ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY ///<4+2N个Vertices代表N个Primitive,其中1,3,5,7,9...代表原本的Triangle strip形成Triangle,而2,4,6,8,10...代表邻近提供信息的点.(由1起算)
#define PRIM_PATCHS VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
#define PRIM_RECTANGLES 0x100 ///<矩形(并非原生支持。以画点形式在每个点的Position中传递Left,Top,Width,Height。在Geometry Shader中转换为2个三角形。用于2D游戏或UI)
#define PRIM_BEGIN VK_PRIMITIVE_TOPOLOGY_POINT_LIST
#define PRIM_END VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
constexpr uint32_t PRIM_RANGE =PRIM_END-PRIM_BEGIN+1;
/**
*
*/
enum class Prim
{
Points=0, ///<点
Lines, ///<线
LineStrip, ///<连续线
Triangles, ///<三角形
TriangleStrip, ///<三角形条
Fan, ///<扇形
LinesAdj, ///<代表一个有四个顶点的Primitive,其中第二个点与第三个点会形成线段,而第一个点与第四个点则用来提供2,3邻近点的信息.
LineStripAdj, ///<与LINES_ADJACENCY类似,第一个点跟最后一个点提供信息,剩下的点则跟Line Strip一样形成线段.
TrianglesAdj, ///<代表一个有六个顶点的Primitive,其中第1,3,5个顶点代表一个Triangle,而地2,4,6个点提供邻近信息.(由1起算)
TriangleStripAdj, ///<4+2N个Vertices代表N个Primitive,其中1,3,5,7,9...代表原本的Triangle strip形成Triangle,而2,4,6,8,10...代表邻近提供信息的点.(由1起算)
Patchs,
Rectangles=0x100, ///<矩形(并非原生支持。以画点形式在每个点的Position中传递Left,Top,Width,Height。在Geometry Shader中转换为2个三角形。用于2D游戏或UI)
ENUM_CLASS_RANGE(Points,Patchs)
};//
#endif//HGL_GRAPH_VULKAN_PRIMITIVE_INCLUDE

View File

@ -117,7 +117,7 @@ bool CommandBuffer::Bind(Renderable *render_obj)
IndexBuffer *indices_buffer=render_obj->GetIndexBuffer();
if(indices_buffer)
vkCmdBindIndexBuffer(cmd_buf,indices_buffer->GetBuffer(),render_obj->GetIndexOffset(),indices_buffer->GetType());
vkCmdBindIndexBuffer(cmd_buf,indices_buffer->GetBuffer(),render_obj->GetIndexOffset(),VkIndexType(indices_buffer->GetType()));
return(true);
}

View File

@ -39,7 +39,7 @@ VAB *Database::CreateVAB(VkFormat format,uint32_t count,const void *data,Sharing
#undef SCENE_DB_CREATE_BUFFER
IndexBuffer *Database::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,SharingMode sharing_mode)
IndexBuffer *Database::CreateIBO(IndexType index_type,uint32_t count,const void *data,SharingMode sharing_mode)
{
IndexBuffer *buf=device->CreateIBO(index_type,count,data,sharing_mode);

View File

@ -64,12 +64,12 @@ VAB *Device::CreateVAB(VkFormat format,uint32_t count,const void *data,SharingMo
return(new VertexAttribBuffer(attr->device,buf,format,stride,count));
}
IndexBuffer *Device::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,SharingMode sharing_mode)
IndexBuffer *Device::CreateIBO(IndexType index_type,uint32_t count,const void *data,SharingMode sharing_mode)
{
uint32_t stride;
if(index_type==VK_INDEX_TYPE_UINT16)stride=2;else
if(index_type==VK_INDEX_TYPE_UINT32)stride=4;else
if(index_type==IndexType::U16)stride=2;else
if(index_type==IndexType::U32)stride=4;else
return(nullptr);
const VkDeviceSize size=stride*count;

View File

@ -217,15 +217,15 @@ PipelineCreater::PipelineCreater(Device *dev,const Material *material,const Rend
}
}
bool PipelineCreater::Set(const uint topology,bool restart)
bool PipelineCreater::Set(const Prim topology,bool restart)
{
if(topology<PRIM_BEGIN||topology>PRIM_END)
if(topology!=PRIM_RECTANGLES)return(false);
if(topology<Prim::BEGIN_RANGE||topology>Prim::END_RANGE)
if(topology!=Prim::Rectangles)return(false);
inputAssembly.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
inputAssembly.pNext = nullptr;
inputAssembly.flags = 0;
inputAssembly.topology = VkPrimitiveTopology(topology==PRIM_RECTANGLES?VK_PRIMITIVE_TOPOLOGY_POINT_LIST:topology);
inputAssembly.topology = VkPrimitiveTopology(topology==Prim::Rectangles?Prim::Points:topology);
inputAssembly.primitiveRestartEnable = restart;
pipelineInfo.pInputAssemblyState = &inputAssembly;