什么是|意思?
m_pD3DDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE);
答案 0 :(得分:9)
这是一个变量(可能是指this
的成员,因为m_*
是一个命名约定):
m_pD3DDevice
这是方法调用
->SetFVF( ... )
这是两个标志常量的按位或,这是将它们组合在一起的一种方法:
D3DFVF_XYZ | D3DFVF_DIFFUSE
按位OR从其操作数中获取每对位的逻辑OR函数。所以,例如给定值
D3DFVF_XYZ = 00000010 = 2
D3DFVF_DIFFUSE = 00010000 = 16
bitwise OR = 00010010 = 18
通常使用|
来组合各个位值的方式,意味着它通常可以替换为普通的+
。
答案 1 :(得分:6)
这是一个按位或功能。
D3DFVF_XYZ
和DFDFVF_DIFFUSE
是最常见的面具。
例如:
0x01 | 0x08 = 0x09
答案 2 :(得分:0)
m_pD3DDevice
这可能是一个成员数据,其类型是一个指针(可能是一个名为D3DDevice的类)。
->
这意味着“取消引用指针”
SetFVF
这是一个成员方法(D3DDevice类)。
D3DFVF_XYZ | D3DFVF_DIFFUSE
这是传递给SetFVF方法的参数值(可能是一对位值)。
答案 3 :(得分:0)
“|”是“按位OR”运算符。如果在代码示例中使用它,它会告诉被调用的库函数您要启用多个选项。换句话说,你说你想要D3DFVF_XYZ和D3DFVF_DIFFUSE。
使用“按位OR”表示“AND”可能有点违反直觉。这是按位逻辑与二进制数值一起使用的方式的工件。您不需要知道这两个常量的实际值,但是您应该理解它们是二进制值,每个值都设置为一个(每个使用不同的位)。使用按位OR运算符组合值时,结果值都设置了两个位。库可以轻松评估结果,以确定您需要的选项。如果您使用“按位AND”运算符“&”而不是“按位OR”,表达式的结果将为零 - 传达错误的信息。
这是配置软件库的常用方法。