OpenGL глубайтный массив в целочисленное значение - PullRequest
0 голосов
/ 27 декабря 2011

У меня есть значения RGB, хранящиеся в массиве GLubyte размера 3, и мне интересно, как я могу представить значения цвета RGB в виде одного целого числа, поэтому мне нужно объединить все 3 значения, чтобы создать целочисленное представление цвета, может кто-нибудь объяснить, как это сделать?

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

Вы можете использовать битовые сдвиги, чтобы получить целое число:

GLuint get_number(GLubyte const* ptr) {
    // magic numbers for shift sizes are safe because GL types have fixed sizes
    // (8 for GLubyte and 32 for GLuint)
    return ptr[0] << 16 + ptr[1] << 8 + ptr[2];
}

А чтобы заполнить массив обратно, вы можете использовать битовые маски:

void get_bytes(GLuint number, GLubyte* out) {
    out[0] = (number & 0xFF0000) >> 16;
    out[1] = (number & 0x00FF00) >> 8;
    out[2] = number & 0x0000FF;
}
1 голос
/ 27 декабря 2011

Примерно так должно получиться:

int color=(ar[0] << 16) | (ar[1] << 8) | ar[2];
0 голосов
/ 27 декабря 2011

YourInteger = R + G*256 + B*65536

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...