我将在openGL
应用中使用颜色选择。我想在创建每个对象时为其分配一个唯一的颜色代码。我的问题是如何对RGB
颜色值进行排列。
我想要的是一个为每个调用返回唯一RGB
颜色的函数,这样我就可以将它分配给对象了。例如,第一个调用将返回RGB
颜色(1, 0, 0)
,下一个将返回(2, 0, 0)
,依此类推,直到它返回(255, 255, 255)
。
所以我的问题是如何实现这个功能。我认为这个想法是使用排列,但我不知道如何开始。在c ++中是否已经实现了排列函数?
答案 0 :(得分:8)
请注意,RGB值只是三个字节。您可以使用简单的int值并从1(0x000001)到16777215(0xffffff)进行迭代。 RGB值可以通过以下公式进行检索:
unsigned char R = color % 256;
unsigned char G = (color / 256) % 256;
unsigned char B = (color / 65536) % 256;
或
unsigned char R = (color & 0xff);
unsigned char G = (color & 0xff00) >> 8;
unsigned char B = (color & 0xff0000) >> 16;
答案 1 :(得分:1)
你可以试试这个:
colour function()
{
static int r=-1,g=0,b=0 ;
r++;
if(r == 256)
{
r=0;
g++
if(g == 256)
{
g=0;
b++;
}
}
if(r == 255 && g==255 && b==255)
r=g=b=0;
// return colour form by r,g and b combination
}
答案 2 :(得分:0)
你可以使用:
rgbArray[255][3];
for (int r = 0; r < 255; ++r)
rgbArray[r][0] = r;
numSwaps = 100;
for (int i = 0; i < numSwaps; ++i)
{
a = rand()%255;
b = rand()%255;
swap(rgbArray[a], rgbArray[b]);
}
当然你可以扩展它来保存RGB颜色的所有变化,然后将它随机化......