C ++语法问题

时间:2010-10-03 22:26:50

标签: c++ directx

什么是|意思?

m_pD3DDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE);

4 个答案:

答案 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_XYZDFDFVF_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”,表达式的结果将为零 - 传达错误的信息。

这是配置软件库的常用方法。