ULRE/src/SceneGraph/Vulkan/VKPrimitive.cpp

99 lines
2.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include<hgl/graph/VKPrimitive.h>
#include<hgl/graph/VKBuffer.h>
#include<hgl/graph/VKShaderModule.h>
#include<hgl/graph/VKVertexAttribBuffer.h>
#include<hgl/graph/VKIndexBuffer.h>
#include"VKPrimitiveData.h"
#ifdef _DEBUG
#include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKDeviceAttribute.h>
#endif//_DEBUG
VK_NAMESPACE_BEGIN
//bool Renderable::Set(const int stage_input_binding,VIL *vil,VkDeviceSize offset)
//{
// if(stage_input_binding<0||stage_input_binding>=buf_count||!vil)return(false);
//
// const VkVertexInputBindingDescription *desc=vertex_sm->GetDesc(stage_input_binding);
// const VkVertexInputAttributeDescription *attr=vertex_sm->GetAttr(stage_input_binding);
//
// if(vil->GetFormat()!=attr->format)return(false);
// if(vil->GetStride()!=desc->stride)return(false);
//
// //format信息来自于shader实际中可以不一样。但那样需要为每一个格式产生一个同样shader的material instance不同的格式又需要不同的pipeline我们不支持这种行为
//
// buf_list[stage_input_binding]=vil->GetBuffer();
// buf_offset[stage_input_binding]=offset;
//
// return(true);
//}
Primitive::Primitive(const AnsiString &pn,PrimitiveData *pd)
{
prim_name=pn;
prim_data=pd;
}
Primitive::~Primitive()
{
SAFE_CLEAR(prim_data);
}
const VkDeviceSize Primitive::GetVertexCount()const
{
return prim_data->GetVertexCount();
}
const int Primitive::GetVABCount()const
{
return prim_data->GetVABCount();
}
const int Primitive::GetVABIndex(const AnsiString &name)const
{
return prim_data->GetVABIndex(name);
}
VAB *Primitive::GetVAB(const int vab_index)
{
return prim_data->GetVAB(vab_index);
}
const int32_t Primitive::GetVertexOffset()const
{
return prim_data->GetVertexOffset();
}
VABMap *Primitive::GetVABMap(const int vab_index)
{
return prim_data->GetVABMap(vab_index);
}
const uint32_t Primitive::GetIndexCount()const
{
return prim_data->GetIndexCount();
}
IndexBuffer *Primitive::GetIBO()
{
return prim_data->GetIBO();
}
const uint32_t Primitive::GetFirstIndex()const
{
return prim_data->GetFirstIndex();
}
IBMap *Primitive::GetIBMap()
{
return prim_data->GetIBMap();
}
VertexDataManager *Primitive::GetVDM()
{
return prim_data->GetVDM();
}
VK_NAMESPACE_END