整数RGB和双alpha到DWORD,然后转换为浮点数

时间:2013-08-31 08:56:25

标签: c++ directx

我需要将传递给我的函数shift double alpha的整数RGB颜色转换为0到1之间,然后将其推回到float数组中。

#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;
}

1 个答案:

答案 0 :(得分:1)

以下内容应该有效:

int result = __GETR(x) * alpha;

右侧是浮点运算,因此__GETR(x)在乘法之前转换为浮点值;最后,结果被截断以适合int