0

関数 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;
}
4

1 に答える 1

1

以下が機能するはずです。

int result = __GETR(x) * alpha;

右辺は浮動小数点演算であるため__GETR(x)、乗算の前に浮動小数点値に変換されます。最後に、結果は に収まるように切り捨てられintます。

于 2013-08-31T09:21:22.067 に答える