Java |按位运算符

时间:2014-05-09 22:41:53

标签: java bit-manipulation lwjgl

我一直在使用LWJGL,我想知道如何将if语句与按位运算符 | 一起使用。

我想重现glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

现在如何在一个中捕获GL_COLOR_BUFFER_BIT,在另一个中捕获GL_DEPTH_BUFFER_BIT?

对不起,我不太擅长解释。

2 个答案:

答案 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)

这里最好的选择是使用以括号分隔的==关系运算符而不是| (或)逻辑运算符