C ++ - 类似于python中的关键字

时间:2014-05-31 22:38:25

标签: python c++

我对opengl着色器有一些抽象,我想用这种方式使用它们:

WITH_SHADER(shader_name) {
 // here will be gl commands
}

它应该自动绑定/取消绑定当前gl上下文中的着色器。 在该复合语句之前绑定并在此之后解除绑定。

我能以某种方式在C ++中构建这个宏吗?

1 个答案:

答案 0 :(得分:14)

最接近的是RAII

构建一个封装着色器的类WithShader

  • 在构造函数中绑定着色​​器
  • 在析构函数中取消绑定

用法示例:

{
  with_shader ws(shader_name)
  // use your shader
}
// binding and unbinding occured automatically, thats RAII.

注意:

一般来说RAII并不简单,请注意复制和赋值构造函数