2013-08-31 23 views
0

我需要將傳遞到我的函數移位雙alpha的0到1之間的整數RGB顏色轉換爲它,然後將其推回到浮點數組中。整數RGB和雙alpha到DWORD,然後強制浮點數

#define __GETR(x) ((x & 0x0000FF)) 
#define __GETG(x) ((x & 0x00FF00)>>8) 
#define __GETB(x) ((x & 0xFF0000)>>16) 

// NOTE: The vertex format for this class should be written so that color is an integer and not float. 
void AddColor(int col, double alpha) 
{ 
    vertices.push_back(D3DCOLOR_RGBA(__GETR(col), __GETG(col), __GETB(col), (int)alpha*255)); 
    useColors = true; 
} 
+0

你不應該在你的名字中有兩個下劃線,也不能用下劃線 - 大寫字母開頭。這些是保留的,你可能會造成難以發現的細微錯誤。只需選擇正常的名字。 –

+0

是的,我真的無法做任何事情,這是一個開源項目,而其他人最初在我們的OpenGL圖形系統中編寫了顏色定義,但我一定會在將來刪除這些顏色定義,謝謝。 – Goombert

回答

1

以下應該工作:

int result = __GETR(x) * alpha; 

右手側是浮點運算,所以__GETR(x)轉換爲乘法之前浮點值;最後結果被截斷以適合int

+0

這看起來像我的DX代碼http://www.gophoto.it/view.php?i=http://oi40.tinypic.com/or54kx.jpg – Goombert

+0

這應該看起來像它的樣子我的OpenGL版本http://oi39.tinypic.com/2w53cqv.jpg – Goombert

+0

此代碼的完整版本可在線獲取我的開源項目https://github.com/RobertBColton/enigma-dev/blob/master/ENIGMAsystem /SHELL/Graphics_Systems/Direct3D9/DX9model.cpp – Goombert