我一直在使用LWJGL,我想知道如何将if语句与按位运算符 | 一起使用。
我想重现glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
现在如何在一个中捕获GL_COLOR_BUFFER_BIT,在另一个中捕获GL_DEPTH_BUFFER_BIT?
对不起,我不太擅长解释。
答案 0 :(得分:4)
使用此:
if ((myFlags & GL_COLOR_BUFFER_BIT) == GL_COLOR_BUFFER_BIT)
// flag is set, act accordingly
注意parens:自bitwise &
has a lower precedence than ==
以来必需。
现在,为什么这样做......让我们假设一个例子:
public static final int TEST = 0x4;
// TEST: 0000 0000 0000 0000 0000 0000 0000 0100
value = 35;
// value: 0000 0000 0000 0000 0000 0000 0010 0011
final boolean b1 = (value & TEST) == TEST; // FALSE
value = 70;
// value: 0000 0000 0000 0000 0000 0000 0100 0110
final boolean b1 = (value & TEST) == TEST; // TRUE
请注意,在Java中,这种做法通常很少使用;您通常更喜欢使用Enum
;然而,奇怪的是,OpenGL似乎没有“Do It The Java Way(tm)”API ...所有现有的API似乎都不符合常用的API,或者如果它们没有故意使用它们,不要记录它:/
答案 1 :(得分:0)
这里最好的选择是使用以括号分隔的==关系运算符而不是| (或)逻辑运算符