0

アプリでカラーピッキングを使用しますopenGL。作成時に各オブジェクトに固有のカラー コードを割り当てたいと考えています。RGB私の問題は、色の値の順列をどのようにするかです。

私がしようとしているのはRGB、オブジェクトに割り当てることができるように、すべての呼び出しに対して一意の色を返す関数です。たとえば、最初の呼び出しではRGBcolorが返され、(1, 0, 0)次の呼び出しでは color が返され、という(2, 0, 0)ように が返されるまで続き(255, 255, 255)ます。

だから私の問題は、関数を実装する方法です。アイデアは順列を使用することだと思いますが、開始方法がわかりません。C ++で既に実装されている順列機能はありますか?

4

3 に答える 3

8

RGB 値は単純に 3 バイトであることに注意してください。単純な 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;
于 2013-04-04T06:40:52.017 に答える
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

}
于 2013-04-04T06:41:26.273 に答える