我正在尝试通过使用宏定义顶点基础知识并让宏最终生成与 OpenGL ( , 等) 一起使用所需的样板代码,从而在 OpenGL 中创建glGetAttribLocation
顶点glEnableVertexAttribArray
结构glVertexAttribPointer
。
我的宏定义如下:
#define DEFINE_GPU_VERTEX_ATTRIBUTE(R, DATA, ELEM) BOOST_PP_CAT(ELEM, DATA);
#define DEFINE_GPU_VERTEX(NAME, ...) struct NAME##_gpu_vertex_t \
{ \
BOOST_PP_SEQ_FOR_EACH(DEFINE_GPU_VERTEX_ATTRIBUTE, _, __VA_ARGS__) \
}
这是我打算如何使用宏的示例:
DEFINE_GPU_VERTEX(bsp,
((vec3_t), position),
((vec3_t), normal),
((vec2_t), texcoord));
其中第一个参数 ( bsp
) 是名称前缀,所有可变参数都是类型和属性名称对。
我希望它生成一个像这样的结构定义:
struct bsp_gpu_vertex_t
{
vec3_t position;
vec3_t normal;
vec2_t texcoord;
}
但是,它似乎生成了一个空结构。我在这里做错了什么?
我不熟悉 C 宏,更不用说 Boost 宏了,因为直到现在我才真正有理由使用它们或了解是什么让它们运行起来。
任何帮助表示赞赏!