1.Buffer统一接口¶
- 创建
- 销毁
- 绑定
- 解绑
2.OpenGL接口,继承自VertexBuffer,IndexBuffer:¶
上面统一的接口+计数+渲染ID
3.Buffer渲染缓冲布局¶
渲染类型--枚举¶
None = 0, Float, Float2, Float3, Float4, Mat3, Mat4, Int, Int2, Int3, Int4, Bool
获得对应的渲染类型缓冲¶
static uint32_t ShaderDataTypeSize(ShaderDataType type)
{
switch (type)
{
case ShaderDataType::Float: return 4;
case ShaderDataType::Float2: return 4 * 2;
case ShaderDataType::Float3: return 4 * 3;
case ShaderDataType::Float4: return 4 * 4;
case ShaderDataType::Mat3: return 4 * 3 * 3;
case ShaderDataType::Mat4: return 4 * 4 * 4;
case ShaderDataType::Int: return 4;
case ShaderDataType::Int2: return 4 * 2;
case ShaderDataType::Int3: return 4 * 3;
case ShaderDataType::Int4: return 4 * 4;
case ShaderDataType::Bool: return 1;
}
CORE_DEBUG_ASSERT(false, "Unknown ShaderDataType!");
return 0;
}
渲染缓冲元素BufferElement¶
单独设置一个缓冲元素结构体,包含了: * 名称 * 数据类型 * 大小 * 偏移 * Normalized
渲染缓冲布局BufferLayout¶
initalizelist:是C++11提供的新类型,定义在头文件中。
用于表示某种特定类型的值的数组,和vector一样,initializer_list也是一种模版类型。 这个可以直接提供给vector数组赋值
- 默认构造函数
- 构造函数(含intializelist的含参构造):同时计算偏移和步长
- 获取元素
- 获取步长
- 迭代器begin,end
- const迭代器begin,end
- 计算偏移和步长的函数
4.应用程序实现¶
- 将缓冲类型翻译成OpenGL对应的类型