RGB颜色排列
RGB color permutation
我将在我的openGL
应用程序中使用颜色选择。我想在创建每个对象时分配一个唯一的颜色代码。我的问题是如何有RGB
颜色值的排列。
我想要的是一个函数,它为每次调用返回一个唯一的RGB
颜色,所以我可以将它分配给对象。例如,第一次调用将返回RGB
颜色的(1, 0, 0)
,下一次调用将返回(2, 0, 0)
,以此类推,直到它将返回(255, 255, 255)
。
所以我的问题是如何实现这个功能。我想这个想法是使用排列,但我不知道如何开始。在c++中是否已经实现了排列函数?
注意,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;
你可以试试:
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
}
你可以使用:
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颜色的变化,然后随机化。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么不;名字在地图上是按顺序排列的吗
- 将"打开的CV图像"中的"颜色"转换为整数格式
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 找到具有最多子串栅栏的字符串排列
- 重新排列单线以形成闭合多边形?
- 列表视图更改选择颜色
- GtkTreeView 交替行颜色
- dx11 渲染到纹理仅显示透明颜色
- 在数组中输入 n 个整数的列表,并以类似于钟摆来回移动的方式排列它们. 输入-1 3 2 5 4,输出5 3 1 2 4
- 使用 OpenGL 4.5 更改所选顶点的颜色
- 为什么我的 LEGACY OPENGL 颜色反转了?
- 输入的 C++ 排列
- 公共/私有/受保护是否会更改内存中结构的排列?
- 如何在 C/C++ 中生成具有 n 组 5 个值(重复项)的所有可能排列的矩阵
- RGB颜色排列