2010-10-03 40 views

回答

9

這是一個變量(可能指的是this成員,如m_*是一個命名約定):

m_pD3DDevice 

這是一個方法調用

->SetFVF(...) 

這在兩個標誌常量的按位或運算,這是將它們組合在一起的一種方式:

D3DFVF_XYZ | D3DFVF_DIFFUSE 

按位OR從其操作數獲取每對比特的邏輯或功能。因此,例如給定的值

D3DFVF_XYZ =  00000010 = 2 
D3DFVF_DIFFUSE = 00010000 = 16 
bitwise OR =  00010010 = 18 

的方式,|通常使用單個位值相結合,意味着它可以經常與普通的舊+所取代。

+0

「這是一個變量」。從名字來看,很可能是一個類的數據成員,並且代碼出現在該類的成員函數中。 – 2010-10-03 22:30:15

+0

@Steve:是的,已更新。 – Potatoswatter 2010-10-03 22:31:09

+0

但你仍然沒有解釋什麼是按位或OR :) – ruslik 2010-10-03 22:34:48

6

這是一個按位或功能。

D3DFVF_XYZDFDFVF_DIFFUSE是最可能的掩碼。

例如:

0x01 | 0x08 = 0x09 
+1

+1回答OP的真正問題。 – 2010-10-03 22:33:06

0

m_pD3DDevice

這可能是一個部件的數據,其類型爲指針(可能到名爲D3DDevice的類)。

->

這意味着 「取消引用指針」

SetFVF

這是一種構件方法(D3DDevice類的)。

D3DFVF_XYZ | D3DFVF_DIFFUSE

這是一個傳遞給SetFVF方法的參數值(可能是一對位值)。

0

「|」是「按位或」運算符。當它在代碼示例中使用時,它會告訴被調用的庫函數您想要啓用多個選項。換句話說,你在說你想要D3DFVF_XYZ和D3DFVF_DIFFUSE。

使用「按位或」表示「AND」可能有點違反直覺。這是按位邏輯與二進制數字值一起工作的一種人爲因素。您不需要知道這兩個常量的實際值,但您應該明白它們是二進制值,每個值都設置爲1(每個都使用不同的位)。當您使用按位或運算符來組合這些值時,結果值的兩個位均已設置。該庫可以輕鬆評估結果以確定您想要的選項。如果您使用「按位AND」運算符「&」而不是「按位或」,則表達式的結果將爲零 - 表示錯誤的信息。

這是配置軟件庫的常用方法。