Java |位运算符
我一直在使用LWJGL,我想知道如何将if语句与按位运算符|一起使用 我想复制Java |位运算符,java,bit-manipulation,lwjgl,Java,Bit Manipulation,Lwjgl,我一直在使用LWJGL,我想知道如何将if语句与按位运算符|一起使用 我想复制glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) 现在,我如何在一个if中捕捉GL_颜色_缓冲区_位,在另一个if中捕捉GL_深度_缓冲区_位 对不起,我不太擅长解释。使用以下方法: if ((myFlags & GL_COLOR_BUFFER_BIT) == GL_COLOR_BUFFER_BIT) // flag is set, act accor
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)代码>
现在,我如何在一个if中捕捉GL_颜色_缓冲区_位,在另一个if中捕捉GL_深度_缓冲区_位
对不起,我不太擅长解释。使用以下方法:
if ((myFlags & GL_COLOR_BUFFER_BIT) == GL_COLOR_BUFFER_BIT)
// flag is set, act accordingly
请注意:这是必要的
现在,为什么这样做。。。让我们举一个假设的例子:
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中,这样的实践通常很少使用;您通常更喜欢使用枚举
;然而,奇怪的是,似乎没有一个OpenGL的“DoIttheJavaWay(tm)”API。。。所有现有的API似乎都没有达到常用的程度,或者,如果它们不是故意使用的,就不要记录它://这里最好的选择是使用用括号分隔的==关系运算符,而不是完全正确的|(或)逻辑运算符,但是人们可能更喜欢较短的版本:如果((标志和掩码)!=0)
,因为掩码通常有一个位设置为1
@cds,所以这是另一个解决方案。。。但在一份1mn的书面答覆中解释所有比特运算,嗯。。。这并不容易;)我不需要所有的。我只需要你要求的。非常感谢。如果你能投票支持我的帖子,那就太好了。@Zyneak我同意在这里不允许出现大量的反对票。。。为了它的价值向上投票。。。