Geometry2D资源以及InlineGeometry资源改用SceneDB管理
This commit is contained in:
parent
8eb1f53e9f
commit
ba283ff0ab
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
|
||||||
PROJECT(ULRE)
|
PROJECT(ULRE)
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14")
|
||||||
|
|
||||||
add_compile_options(/GR- /arch:AVX2)
|
add_compile_options(/GR- /arch:AVX2)
|
||||||
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||||
|
|
||||||
ELSE()
|
ELSE()
|
||||||
IF(NOT ANDROID)
|
IF(NOT ANDROID)
|
||||||
|
@ -6,7 +6,8 @@
|
|||||||
#include"VulkanAppFramework.h"
|
#include"VulkanAppFramework.h"
|
||||||
#include<hgl/filesystem/FileSystem.h>
|
#include<hgl/filesystem/FileSystem.h>
|
||||||
#include<hgl/graph/InlineGeometry.h>
|
#include<hgl/graph/InlineGeometry.h>
|
||||||
#include<hgl/type/ResManage.h>
|
#include<hgl/graph/SceneDB.h>
|
||||||
|
#include<hgl/graph/RenderableNode.h>
|
||||||
|
|
||||||
using namespace hgl;
|
using namespace hgl;
|
||||||
using namespace hgl::graph;
|
using namespace hgl::graph;
|
||||||
@ -28,32 +29,27 @@ private:
|
|||||||
|
|
||||||
uint swap_chain_count=0;
|
uint swap_chain_count=0;
|
||||||
|
|
||||||
|
SceneDB * db =nullptr;
|
||||||
|
|
||||||
vulkan::Material * material =nullptr;
|
vulkan::Material * material =nullptr;
|
||||||
vulkan::DescriptorSets * descriptor_sets =nullptr;
|
vulkan::DescriptorSets * descriptor_sets =nullptr;
|
||||||
|
|
||||||
vulkan::Renderable * render_obj =nullptr;
|
vulkan::Renderable * render_obj =nullptr;
|
||||||
vulkan::RenderableInstance *render_instance =nullptr;
|
RenderableNode * render_node =nullptr;
|
||||||
|
|
||||||
vulkan::Buffer * ubo_mvp =nullptr;
|
vulkan::Buffer * ubo_mvp =nullptr;
|
||||||
|
|
||||||
vulkan::Pipeline * pipeline =nullptr;
|
vulkan::Pipeline * pipeline =nullptr;
|
||||||
vulkan::CommandBuffer ** cmd_buf =nullptr;
|
vulkan::CommandBuffer ** cmd_buf =nullptr;
|
||||||
|
|
||||||
vulkan::VertexBuffer * vertex_buffer =nullptr;
|
|
||||||
vulkan::VertexBuffer * color_buffer =nullptr;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
~TestApp()
|
~TestApp()
|
||||||
{
|
{
|
||||||
SAFE_CLEAR(render_instance);
|
SAFE_CLEAR(render_node);
|
||||||
SAFE_CLEAR(color_buffer);
|
SAFE_CLEAR(db);
|
||||||
SAFE_CLEAR(vertex_buffer);
|
|
||||||
SAFE_CLEAR_OBJECT_ARRAY(cmd_buf,swap_chain_count);
|
SAFE_CLEAR_OBJECT_ARRAY(cmd_buf,swap_chain_count);
|
||||||
SAFE_CLEAR(pipeline);
|
|
||||||
SAFE_CLEAR(ubo_mvp);
|
|
||||||
SAFE_CLEAR(render_obj);
|
|
||||||
SAFE_CLEAR(descriptor_sets);
|
|
||||||
SAFE_CLEAR(material);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -66,6 +62,9 @@ private:
|
|||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
descriptor_sets=material->CreateDescriptorSets();
|
descriptor_sets=material->CreateDescriptorSets();
|
||||||
|
|
||||||
|
db->Add(material);
|
||||||
|
db->Add(descriptor_sets);
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +94,7 @@ private:
|
|||||||
|
|
||||||
cci.field_count=8;
|
cci.field_count=8;
|
||||||
|
|
||||||
render_obj=CreateCircle(device,material,&cci);
|
render_obj=CreateCircle(db,material,&cci);
|
||||||
|
|
||||||
return render_obj;
|
return render_obj;
|
||||||
}
|
}
|
||||||
@ -106,7 +105,7 @@ private:
|
|||||||
|
|
||||||
world.mvp=ortho(extent.width,extent.height);
|
world.mvp=ortho(extent.width,extent.height);
|
||||||
|
|
||||||
ubo_mvp=device->CreateUBO(sizeof(WorldConfig),&world);
|
ubo_mvp=db->CreateUBO(sizeof(WorldConfig),&world);
|
||||||
|
|
||||||
if(!ubo_mvp)
|
if(!ubo_mvp)
|
||||||
return(false);
|
return(false);
|
||||||
@ -130,14 +129,14 @@ private:
|
|||||||
pipeline_creater->Set(PRIM_TRIANGLE_FAN);
|
pipeline_creater->Set(PRIM_TRIANGLE_FAN);
|
||||||
|
|
||||||
pipeline=pipeline_creater->Create();
|
pipeline=pipeline_creater->Create();
|
||||||
|
db->Add(pipeline);
|
||||||
delete pipeline_creater;
|
delete pipeline_creater;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pipeline;
|
return pipeline;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Draw(vulkan::CommandBuffer *cb,vulkan::RenderableInstance *ri)
|
void Draw(vulkan::CommandBuffer *cb,RenderableNode *ri)
|
||||||
{
|
{
|
||||||
cb->Bind(ri->GetPipeline());
|
cb->Bind(ri->GetPipeline());
|
||||||
cb->Bind(ri->GetDescriptorSets());
|
cb->Bind(ri->GetDescriptorSets());
|
||||||
@ -171,7 +170,7 @@ private:
|
|||||||
|
|
||||||
cmd_buf[i]->Begin();
|
cmd_buf[i]->Begin();
|
||||||
cmd_buf[i]->BeginRenderPass(device->GetRenderPass(),device->GetFramebuffer(i));
|
cmd_buf[i]->BeginRenderPass(device->GetRenderPass(),device->GetFramebuffer(i));
|
||||||
Draw(cmd_buf[i],render_instance);
|
Draw(cmd_buf[i],render_node);
|
||||||
cmd_buf[i]->EndRenderPass();
|
cmd_buf[i]->EndRenderPass();
|
||||||
cmd_buf[i]->End();
|
cmd_buf[i]->End();
|
||||||
}
|
}
|
||||||
@ -188,6 +187,8 @@ public:
|
|||||||
|
|
||||||
swap_chain_count=device->GetSwapChainImageCount();
|
swap_chain_count=device->GetSwapChainImageCount();
|
||||||
|
|
||||||
|
db=new SceneDB(device);
|
||||||
|
|
||||||
if(!InitMaterial())
|
if(!InitMaterial())
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
@ -200,7 +201,7 @@ public:
|
|||||||
if(!InitPipeline())
|
if(!InitPipeline())
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
render_instance=new vulkan::RenderableInstance(pipeline,descriptor_sets,render_obj);
|
render_node=new RenderableNode(pipeline,descriptor_sets,render_obj);
|
||||||
|
|
||||||
if(!InitCommandBuffer())
|
if(!InitCommandBuffer())
|
||||||
return(false);
|
return(false);
|
||||||
|
@ -8,6 +8,8 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
namespace graph
|
namespace graph
|
||||||
{
|
{
|
||||||
|
class SceneDB;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 矩形创建信息
|
* 矩形创建信息
|
||||||
*/
|
*/
|
||||||
@ -16,7 +18,7 @@ namespace hgl
|
|||||||
RectScope2f scope;
|
RectScope2f scope;
|
||||||
};
|
};
|
||||||
|
|
||||||
vulkan::Renderable *CreateRectangle(vulkan::Device *device,vulkan::Material *mtl,const RectangleCreateInfo *rci);
|
vulkan::Renderable *CreateRectangle(SceneDB *db,vulkan::Material *mtl,const RectangleCreateInfo *rci);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 圆角矩形创建信息
|
* 圆角矩形创建信息
|
||||||
@ -27,7 +29,7 @@ namespace hgl
|
|||||||
uint32_t round_per; //圆角精度
|
uint32_t round_per; //圆角精度
|
||||||
};
|
};
|
||||||
|
|
||||||
vulkan::Renderable *CreateRoundRectangle(vulkan::Device *device,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci);
|
vulkan::Renderable *CreateRoundRectangle(SceneDB *db,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 圆形创建信息
|
* 圆形创建信息
|
||||||
@ -39,7 +41,7 @@ namespace hgl
|
|||||||
uint field_count; //分段次数
|
uint field_count; //分段次数
|
||||||
};
|
};
|
||||||
|
|
||||||
vulkan::Renderable *CreateCircle(vulkan::Device *device,vulkan::Material *mtl,const CircleCreateInfo *rci);
|
vulkan::Renderable *CreateCircle(SceneDB *db,vulkan::Material *mtl,const CircleCreateInfo *rci);
|
||||||
}//namespace graph
|
}//namespace graph
|
||||||
};//namespace hgl
|
};//namespace hgl
|
||||||
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
#endif//HGL_GRAPH_INLINE_GEOMETRY_INCLUDE
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
#ifndef HGL_GRAPH_SCENE_DATABASE_INCLUDE
|
#ifndef HGL_GRAPH_SCENE_DATABASE_INCLUDE
|
||||||
#define HGL_GRAPH_SCENE_DATABASE_INCLUDE
|
#define HGL_GRAPH_SCENE_DATABASE_INCLUDE
|
||||||
|
|
||||||
#include<hgl/graph/vulkan/VK.h>
|
#include<hgl/graph/vulkan/VKMaterial.h>
|
||||||
|
#include<hgl/graph/vulkan/VKPipeline.h>
|
||||||
|
#include<hgl/graph/vulkan/VKDescriptorSets.h>
|
||||||
|
#include<hgl/graph/vulkan/VKRenderable.h>
|
||||||
|
#include<hgl/graph/vulkan/VKBuffer.h>
|
||||||
|
#include<hgl/graph/VertexBufferCreater.h>
|
||||||
#include<hgl/type/ResManage.h>
|
#include<hgl/type/ResManage.h>
|
||||||
namespace hgl
|
namespace hgl
|
||||||
{
|
{
|
||||||
@ -13,20 +18,24 @@ namespace hgl
|
|||||||
using RenderableID =int;
|
using RenderableID =int;
|
||||||
using BufferID =int;
|
using BufferID =int;
|
||||||
|
|
||||||
|
class VertexBufferCreater;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 场景DB,用于管理场景内所需的所有数据
|
* 场景DB,用于管理场景内所需的所有数据
|
||||||
*/
|
*/
|
||||||
class SceneDB
|
class SceneDB
|
||||||
{
|
{
|
||||||
|
vulkan::Device *device;
|
||||||
|
|
||||||
IDResManage<MaterialID, vulkan::Material> rm_material; ///<材质合集
|
IDResManage<MaterialID, vulkan::Material> rm_material; ///<材质合集
|
||||||
IDResManage<PipelineID, vulkan::Pipeline> rm_pipeline; ///<管线合集
|
IDResManage<PipelineID, vulkan::Pipeline> rm_pipeline; ///<管线合集
|
||||||
IDResManage<DescriptorSetsID, vulkan::DescriptorSets> rm_desc_sets; ///<描述符合集
|
IDResManage<DescriptorSetsID, vulkan::DescriptorSets> rm_desc_sets; ///<描述符合集
|
||||||
IDResManage<RenderableID, vulkan::Renderable> rm_renderables; ///<可渲染对象合集
|
IDResManage<RenderableID, vulkan::Renderable> rm_renderables; ///<可渲染对象合集
|
||||||
IDResManage<BufferID, vulkan::Buffer> rm_buffers; ///<顶点缓冲区集合
|
IDResManage<BufferID, vulkan::Buffer> rm_buffers; ///<顶点缓冲区集合
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
SceneDB()=default;
|
SceneDB(vulkan::Device *dev):device(dev){}
|
||||||
virtual ~SceneDB()=default;
|
virtual ~SceneDB()=default;
|
||||||
|
|
||||||
MaterialID Add(vulkan::Material * mtl ){return rm_material.Add(mtl);}
|
MaterialID Add(vulkan::Material * mtl ){return rm_material.Add(mtl);}
|
||||||
@ -35,6 +44,19 @@ namespace hgl
|
|||||||
RenderableID Add(vulkan::Renderable * r ){return rm_renderables.Add(r);}
|
RenderableID Add(vulkan::Renderable * r ){return rm_renderables.Add(r);}
|
||||||
BufferID Add(vulkan::Buffer * buf ){return rm_buffers.Add(buf);}
|
BufferID Add(vulkan::Buffer * buf ){return rm_buffers.Add(buf);}
|
||||||
|
|
||||||
|
vulkan::VertexBuffer *CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
||||||
|
vulkan::VertexBuffer *CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);}
|
||||||
|
vulkan::VertexBuffer *CreateVBO(const VertexBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);}
|
||||||
|
|
||||||
|
#define SCENE_DB_CREATE_FUNC(name) vulkan::Buffer *Create##name(VkDeviceSize size,void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); \
|
||||||
|
vulkan::Buffer *Create##name(VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
|
||||||
|
|
||||||
|
SCENE_DB_CREATE_FUNC(UBO)
|
||||||
|
SCENE_DB_CREATE_FUNC(SSBO)
|
||||||
|
SCENE_DB_CREATE_FUNC(INBO)
|
||||||
|
|
||||||
|
#undef SCENE_DB_CREATE_FUNC
|
||||||
|
|
||||||
vulkan::Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);}
|
vulkan::Material * GetMaterial (const MaterialID &id){return rm_material.Get(id);}
|
||||||
vulkan::Pipeline * GetPipeline (const PipelineID &id){return rm_pipeline.Get(id);}
|
vulkan::Pipeline * GetPipeline (const PipelineID &id){return rm_pipeline.Get(id);}
|
||||||
vulkan::DescriptorSets *GetDescSets (const DescriptorSetsID &id){return rm_desc_sets.Get(id);}
|
vulkan::DescriptorSets *GetDescSets (const DescriptorSetsID &id){return rm_desc_sets.Get(id);}
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
[Dolphin]
|
|
||||||
PreviewsShown=false
|
|
||||||
Timestamp=2018,11,27,14,36,21
|
|
||||||
Version=4
|
|
||||||
ViewMode=1
|
|
@ -1,4 +1,4 @@
|
|||||||
#ifndef HGL_COMPILER_MICROSOFT_INCLUDE
|
#ifndef HGL_COMPILER_MICROSOFT_INCLUDE
|
||||||
#define HGL_COMPILER_MICROSOFT_INCLUDE
|
#define HGL_COMPILER_MICROSOFT_INCLUDE
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
#define HGL_COMPILER_NAME OS_TEXT("Microsoft C/C++")
|
#define HGL_COMPILER_NAME OS_TEXT("Microsoft C/C++")
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
#include<hgl/graph/InlineGeometry.h>
|
#include<hgl/graph/InlineGeometry.h>
|
||||||
#include<hgl/graph/VertexBuffer.h>
|
#include<hgl/graph/VertexBuffer.h>
|
||||||
#include<hgl/graph/vulkan/VKDevice.h>
|
#include<hgl/graph/vulkan/VKDevice.h>
|
||||||
#include<hgl/graph/vulkan/VKMaterial.h>
|
|
||||||
#include<hgl/graph/vulkan/VKRenderable.h>
|
|
||||||
#include<hgl/graph/vulkan/VKShaderModule.h>
|
#include<hgl/graph/vulkan/VKShaderModule.h>
|
||||||
|
#include<hgl/graph/SceneDB.h>
|
||||||
namespace hgl
|
namespace hgl
|
||||||
{
|
{
|
||||||
namespace graph
|
namespace graph
|
||||||
{
|
{
|
||||||
vulkan::Renderable *CreateRectangle(vulkan::Device *device,vulkan::Material *mtl,const RectangleCreateInfo *rci)
|
vulkan::Renderable *CreateRectangle(SceneDB *db,vulkan::Material *mtl,const RectangleCreateInfo *rci)
|
||||||
{
|
{
|
||||||
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
||||||
|
|
||||||
@ -24,14 +23,15 @@ namespace hgl
|
|||||||
vertex->End();
|
vertex->End();
|
||||||
|
|
||||||
vulkan::Renderable *render_obj=mtl->CreateRenderable(vertex->GetCount());
|
vulkan::Renderable *render_obj=mtl->CreateRenderable(vertex->GetCount());
|
||||||
render_obj->Set(vertex_binding,device->CreateVBO(vertex));
|
render_obj->Set(vertex_binding,db->CreateVBO(vertex));
|
||||||
render_obj->SetBoundingBox(vertex->GetAABB());
|
render_obj->SetBoundingBox(vertex->GetAABB());
|
||||||
|
|
||||||
delete vertex;
|
delete vertex;
|
||||||
|
db->Add(render_obj);
|
||||||
return render_obj;
|
return render_obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
vulkan::Renderable *CreateRoundRectangle(vulkan::Device *device,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci)
|
vulkan::Renderable *CreateRoundRectangle(SceneDB *db,vulkan::Material *mtl,const RoundRectangleCreateInfo *rci)
|
||||||
{
|
{
|
||||||
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
||||||
|
|
||||||
@ -111,14 +111,15 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
|
|
||||||
render_obj=mtl->CreateRenderable(vertex->GetCount());
|
render_obj=mtl->CreateRenderable(vertex->GetCount());
|
||||||
render_obj->Set(vertex_binding,device->CreateVBO(vertex));
|
render_obj->Set(vertex_binding,db->CreateVBO(vertex));
|
||||||
render_obj->SetBoundingBox(vertex->GetAABB());
|
render_obj->SetBoundingBox(vertex->GetAABB());
|
||||||
|
|
||||||
delete vertex;
|
delete vertex;
|
||||||
|
db->Add(render_obj);
|
||||||
return render_obj;
|
return render_obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
vulkan::Renderable *CreateCircle(vulkan::Device *device,vulkan::Material *mtl,const CircleCreateInfo *cci)
|
vulkan::Renderable *CreateCircle(SceneDB *db,vulkan::Material *mtl,const CircleCreateInfo *cci)
|
||||||
{
|
{
|
||||||
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
const vulkan::VertexShaderModule *vsm=mtl->GetVertexShaderModule();
|
||||||
|
|
||||||
@ -146,10 +147,11 @@ namespace hgl
|
|||||||
vertex->End();
|
vertex->End();
|
||||||
|
|
||||||
vulkan::Renderable *render_obj=mtl->CreateRenderable(vertex->GetCount());
|
vulkan::Renderable *render_obj=mtl->CreateRenderable(vertex->GetCount());
|
||||||
render_obj->Set(vertex_binding,device->CreateVBO(vertex));
|
render_obj->Set(vertex_binding,db->CreateVBO(vertex));
|
||||||
render_obj->SetBoundingBox(vertex->GetAABB());
|
render_obj->SetBoundingBox(vertex->GetAABB());
|
||||||
|
|
||||||
delete vertex;
|
delete vertex;
|
||||||
|
db->Add(render_obj);
|
||||||
return render_obj;
|
return render_obj;
|
||||||
}
|
}
|
||||||
}//namespace graph
|
}//namespace graph
|
||||||
|
@ -1,8 +1,44 @@
|
|||||||
#include<hgl/graph/SceneDB.h>
|
#include<hgl/graph/SceneDB.h>
|
||||||
|
#include<hgl/graph/vulkan/VKDevice.h>
|
||||||
|
|
||||||
namespace hgl
|
namespace hgl
|
||||||
{
|
{
|
||||||
namespace graph
|
namespace graph
|
||||||
{
|
{
|
||||||
|
vulkan::VertexBuffer *SceneDB::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode)
|
||||||
|
{
|
||||||
|
vulkan::VertexBuffer *vb=device->CreateVBO(format,count,data,sharing_mode);
|
||||||
|
|
||||||
|
if(!vb)
|
||||||
|
return(nullptr);
|
||||||
|
|
||||||
|
rm_buffers.Add(vb);
|
||||||
|
|
||||||
|
return vb;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define SCENE_DB_CREATE_BUFFER(name) vulkan::Buffer *SceneDB::Create##name(VkDeviceSize size,void *data,VkSharingMode sharing_mode) \
|
||||||
|
{ \
|
||||||
|
vulkan::Buffer *buf=device->Create##name(size,data,sharing_mode); \
|
||||||
|
\
|
||||||
|
if(!buf)return(nullptr); \
|
||||||
|
rm_buffers.Add(buf); \
|
||||||
|
return(buf); \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
vulkan::Buffer *SceneDB::Create##name(VkDeviceSize size,VkSharingMode sharing_mode) \
|
||||||
|
{ \
|
||||||
|
vulkan::Buffer *buf=device->Create##name(size,sharing_mode); \
|
||||||
|
\
|
||||||
|
if(!buf)return(nullptr); \
|
||||||
|
rm_buffers.Add(buf); \
|
||||||
|
return(buf); \
|
||||||
|
}
|
||||||
|
|
||||||
|
SCENE_DB_CREATE_BUFFER(UBO)
|
||||||
|
SCENE_DB_CREATE_BUFFER(SSBO)
|
||||||
|
SCENE_DB_CREATE_BUFFER(INBO)
|
||||||
|
|
||||||
|
#undef SCENE_DB_CREATE_BUFFER
|
||||||
}//namespace graph
|
}//namespace graph
|
||||||
}//namespace hgl
|
}//namespace hgl
|
||||||
|
Loading…
x
Reference in New Issue
Block a user