1.9 KiB
1.9 KiB
VertexAttribute
命名空间: XCEngine::RHI
描述: 顶点属性描述结构体,用于定义顶点缓冲区中单个属性的布局。
成员
| 成员 | 类型 | 描述 |
|---|---|---|
index |
unsigned int |
属性索引,对应着色器中 layout(location = n) |
count |
int |
分量数量(1-4),如位置用 3,纹理坐标用 2 |
type |
unsigned int |
OpenGL 数据类型,如 GL_FLOAT、GL_INT |
normalized |
bool |
是否归一化Fixed-point类型 |
stride |
size_t |
连续顶点属性之间的字节偏移 |
offset |
size_t |
此属性在顶点结构体中的字节偏移 |
类型取值参考
| 类型常量 | 描述 |
|---|---|
GL_BYTE |
有符号字节 |
GL_UNSIGNED_BYTE |
无符号字节 |
GL_SHORT |
有符号短整型 |
GL_UNSIGNED_SHORT |
无符号短整型 |
GL_INT |
有符号整型 |
GL_UNSIGNED_INT |
无符号整型 |
GL_FLOAT |
单精度浮点 |
GL_DOUBLE |
双精度浮点 |
使用示例
// 定义顶点结构体
struct Vertex {
float position[3];
float normal[3];
float texCoord[2];
};
// 位置属性 (index=0)
VertexAttribute posAttr;
posAttr.index = 0;
posAttr.count = 3;
posAttr.type = GL_FLOAT;
posAttr.normalized = GL_FALSE;
posAttr.stride = sizeof(Vertex);
posAttr.offset = 0;
// 法线属性 (index=1)
VertexAttribute normalAttr;
normalAttr.index = 1;
normalAttr.count = 3;
normalAttr.type = GL_FLOAT;
normalAttr.normalized = GL_FALSE;
normalAttr.stride = sizeof(Vertex);
normalAttr.offset = offsetof(Vertex, normal);
// 纹理坐标属性 (index=2)
VertexAttribute texAttr;
texAttr.index = 2;
texAttr.count = 2;
texAttr.type = GL_FLOAT;
texAttr.normalized = GL_FALSE;
texAttr.stride = sizeof(Vertex);
texAttr.offset = offsetof(Vertex, texCoord);
相关文档
- OpenGLVertexArray - 返回类总览
- AddVertexBuffer - 添加顶点缓冲方法