我想用C ++在OpenGL中为我的灯光进行3状态切换。所以我想要这样做的方法是当LIGHT0被启用时LIGHT1和LIGHT2被禁用。当LIGHT1启用时,LIGHT0和LIGHT2被禁用等。 我知道我可以轻松地在两个变量之间切换:
bool light_0 = true, light_1 = false;
if (key press) {
light_0 = !light_0;
light_1 = !light_1;
}
如果我将它用于三个变量,那么我最终会打开一盏灯并关闭两个灯。
答案 0 :(得分:1)
使用状态机。
你需要一个类似建议的枚举:
enum Light{
LIGHT_0, LIGHT_1, LIGHT_2
}
创建Light实例以跟踪状态。
Light lightState = new Light();
无论何时使用灯光,您都可以切换到当前状态:
useLight(){
switch(lightState){
case LIGHT_0:
//do whatever you want
break;
case LIGHT_1:
//do whatever you want
break;
// and so on, customized for your need
}
}
每当你想改变光线时,只需将所需的光线状态分配给lightState。
if(keyPress){
lightState = LIGHT_1;
}
我希望现在可以理解。 (这不是一个合适的c ++语法)