Спасибо за ответы)
Если кому надо:
Задание цветового индекса является платформо-зависимой операцией.
У пользователей
GLUT есть
glutSetColor(int cell,
GLfloat red, GLfloat green, GLfloat blue);
Другой способ лежит через
GL_MAP_COLOR
Пример:
unsigned char bitmap[] = { 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0x00,
0x03, 0xFF, 0xFF, 0xC0,
0x07, 0xFF, 0xFF, 0xE0,
0x0F, 0x80, 0x01, 0xF0,
0x1E, 0x00, 0x00, 0xF8,
0x1C, 0x00, 0x00, 0x38,
0x3C, 0x7E, 0x7E, 0x3C,
0x38, 0x0E, 0x70, 0x1C,
0x39, 0xF0, 0x0F, 0x9C,
0x38, 0x00, 0x00, 0x1C,
0x38, 0x00, 0x00, 0x1C,
0x38, 0x38, 0x1C, 0x1C,
0x38, 0xFE, 0x7F, 0x1C,
0x38, 0xC6, 0x63, 0x1C,
0x38, 0xD6, 0x6B, 0x1C,
0x38, 0xD6, 0x6B, 0x1C,
0x38, 0xC6, 0x63, 0x1C,
0x38, 0xFE, 0x7F, 0x1C,
0x38, 0x7C, 0x3E, 0x1C,
0x3C, 0x00, 0x00, 0x3C,
0x3C, 0x00, 0x00, 0x3C,
0x7E, 0x00, 0x00, 0x7E,
0x7F, 0x80, 0x01, 0xFE,
0x77, 0xFF, 0xFF, 0xEE,
0x63, 0xFF, 0xFF, 0xC7,
0xE7, 0xFF, 0xFF, 0xE7,
0xFF, 0xF0, 0x0F, 0xFF,
0xFF, 0x00, 0x01, 0xFF,
0xF0, 0x00, 0x00, 0x0F
};
void draw(){
glClearColor(1, 1, 0, 1);//жёлтым
glClear(GL_COLOR_BUFFER_BIT);//закрасить
glPixelTransferi(GL_MAP_COLOR, 1);//использоваь карту
float map[2] = { 1, 0 };//пусть...
//...все единицы закрашивают в чёрный, а все нули - в белый цвета...
glPixelMapfv(GL_PIXEL_MAP_I_TO_R, 2, map);
glPixelMapfv(GL_PIXEL_MAP_I_TO_G, 2, map);
glPixelMapfv(GL_PIXEL_MAP_I_TO_B, 2, map);
//...и все нули будут прозрачными
map[0] = 0, map[1] = 1;
glPixelMapfv(GL_PIXEL_MAP_I_TO_A, 2, map);
//Итого: для единиц действует цвет glColor4f(0,0,0,1), а для нулей будет glColor4f(1,1,1,0)
glRasterPos2i(-160, -160);//позиция от центра экрана в пикселях ( не забыть вызвать glOrtho(...) )
glPixelZoom(10, 10);//теперь работает
/*этот блок*/ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
/*лучше поставить*/ glEnable(GL_BLEND); //прозрачность
/*в начале программы*/ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //определяется компонентом ALPHA
glDrawPixels(32, 32, GL_COLOR_INDEX, GL_BITMAP, bitmap);//рисовать 32x32 bitmap, где кадый бит определяет цветовой индекс "0" или "1"
glPixelTransferi(GL_MAP_COLOR, 0);//не использовать карту
}