Opengl glubyte数组为整数值

时间:2011-12-27 13:25:13

标签: c++ opengl

我将RGB值存储在大小为3的GLubyte数组中,并想知道如何将RGB颜色值表示为单个整数,所以我想要的是将所有3个值组合起来创建颜色的整数表示,有人可以解释如何做到这一点吗?

3 个答案:

答案 0 :(得分:1)

这样的事情可以解决问题:

int color=(ar[0] << 16) | (ar[1] << 8) | ar[2];

答案 1 :(得分:1)

您可以使用位移来生成整数:

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;
}

答案 2 :(得分:0)

YourInteger = R + G*256 + B*65536

这就是你要找的东西吗?