我对opengl着色器有一些抽象,我想用这种方式使用它们:
WITH_SHADER(shader_name) {
// here will be gl commands
}
它应该自动绑定/取消绑定当前gl上下文中的着色器。 在该复合语句之前绑定并在此之后解除绑定。
我能以某种方式在C ++中构建这个宏吗?
答案 0 :(得分:14)
最接近的是RAII。
构建一个封装着色器的类WithShader
:
用法示例:
{
with_shader ws(shader_name)
// use your shader
}
// binding and unbinding occured automatically, thats RAII.
注意:强>
一般来说RAII并不简单,请注意复制和赋值构造函数