optimized first_triangle based on RenderablePrimitiveCreater class.
This commit is contained in:
parent
a6b71a449e
commit
844636a46b
@ -6,6 +6,7 @@
|
|||||||
#include<hgl/math/HalfFloat.h>
|
#include<hgl/math/HalfFloat.h>
|
||||||
#include<hgl/filesystem/FileSystem.h>
|
#include<hgl/filesystem/FileSystem.h>
|
||||||
#include<hgl/graph/SceneInfo.h>
|
#include<hgl/graph/SceneInfo.h>
|
||||||
|
#include<hgl/graph/VKRenderablePrimitiveCreater.h>
|
||||||
|
|
||||||
using namespace hgl;
|
using namespace hgl;
|
||||||
using namespace hgl::graph;
|
using namespace hgl::graph;
|
||||||
@ -96,17 +97,16 @@ private:
|
|||||||
|
|
||||||
bool InitVBO()
|
bool InitVBO()
|
||||||
{
|
{
|
||||||
Primitive *primitive=db->CreatePrimitive(VERTEX_COUNT);
|
RenderablePrimitiveCreater rpc(db,VERTEX_COUNT);
|
||||||
if(!primitive)return(false);
|
|
||||||
|
|
||||||
#ifdef USE_HALF_FLOAT_POSITION
|
#ifdef USE_HALF_FLOAT_POSITION
|
||||||
Float32toFloat16(position_data_hf,position_data_float,VERTEX_COUNT*2);
|
Float32toFloat16(position_data_hf,position_data_float,VERTEX_COUNT*2);
|
||||||
#endif//USE_HALF_FLOAT_POSITION
|
#endif//USE_HALF_FLOAT_POSITION
|
||||||
|
|
||||||
if(!primitive->Set(VAN::Position, db->CreateVBO(PositionFormat, VERTEX_COUNT,position_data )))return(false);
|
if(!rpc.SetVBO(VAN::Position, PositionFormat, position_data))return(false);
|
||||||
if(!primitive->Set(VAN::Color, db->CreateVBO(ColorFormat, VERTEX_COUNT,color_data )))return(false);
|
if(!rpc.SetVBO(VAN::Color, ColorFormat, color_data ))return(false);
|
||||||
|
|
||||||
render_obj=db->CreateRenderable(primitive,material_instance,pipeline);
|
render_obj=rpc.Create(material_instance,pipeline);
|
||||||
return(render_obj);
|
return(render_obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
53
inc/hgl/graph/VKRenderablePrimitiveCreater.h
Normal file
53
inc/hgl/graph/VKRenderablePrimitiveCreater.h
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#ifndef HGL_VK_RENDERABLE_PRIMITIVE_CREATER_INCLUDE
|
||||||
|
#define HGL_VK_RENDERABLE_PRIMITIVE_CREATER_INCLUDE
|
||||||
|
|
||||||
|
#include<hgl/graph/VKRenderResource.h>
|
||||||
|
|
||||||
|
VK_NAMESPACE_BEGIN
|
||||||
|
class RenderablePrimitiveCreater
|
||||||
|
{
|
||||||
|
RenderResource *rr;
|
||||||
|
|
||||||
|
uint32_t vertex_count;
|
||||||
|
|
||||||
|
Primitive *prim;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
RenderablePrimitiveCreater(RenderResource *_rr,uint32_t vc)
|
||||||
|
{
|
||||||
|
rr=_rr;
|
||||||
|
vertex_count=vc;
|
||||||
|
|
||||||
|
prim=rr->CreatePrimitive(vertex_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SetVBO(const AnsiString &name,const VkFormat &fmt,const void *buf)
|
||||||
|
{
|
||||||
|
VBO *vbo=rr->CreateVBO(fmt,vertex_count,buf);
|
||||||
|
|
||||||
|
if(!vbo)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
prim->Set(name,vbo);
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SetIBO(const IndexType &it,const void *buf)
|
||||||
|
{
|
||||||
|
IndexBuffer *ibo=rr->CreateIBO(it,vertex_count,buf);
|
||||||
|
|
||||||
|
if(!ibo)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
prim->Set(ibo);
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
Renderable *Create(MaterialInstance *mi,Pipeline *p)
|
||||||
|
{
|
||||||
|
return rr->CreateRenderable(prim,mi,p);
|
||||||
|
}
|
||||||
|
};//class RenderablePrimitiveCreater
|
||||||
|
VK_NAMESPACE_END
|
||||||
|
#endif // HGL_VK_RENDERABLE_PRIMITIVE_CREATER_INCLUDE
|
@ -83,6 +83,7 @@ SOURCE_GROUP("Header Files" FILES ${SCENE_GRAPH_HEADER})
|
|||||||
SOURCE_GROUP("Source Files" FILES ${SCENE_GRAPH_SOURCE})
|
SOURCE_GROUP("Source Files" FILES ${SCENE_GRAPH_SOURCE})
|
||||||
|
|
||||||
SET(VK_RR_SOURCE ${SG_INCLUDE_PATH}/VKRenderResource.h
|
SET(VK_RR_SOURCE ${SG_INCLUDE_PATH}/VKRenderResource.h
|
||||||
|
${SG_INCLUDE_PATH}/VKRenderablePrimitiveCreater.h
|
||||||
Vulkan/VKRenderResource.cpp
|
Vulkan/VKRenderResource.cpp
|
||||||
Vulkan/VKRenderResourceMaterial.cpp)
|
Vulkan/VKRenderResourceMaterial.cpp)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user