Штриховка полигонов
Штриховка полигонов
Теперь применим штриховку (stipple) к полигонам. Режим штриховки включается и выключается стандартным способом:
glEnable (GL_POLYGON_STIPPLE) ;
glDisable (GL_POLYGON_STIPPLE);
Bitmap-узор (pattern) штриховки надо предварительно подготовить в массиве такой размерности, чтобы заполнить bitmap площадью 32x32 = 1024 пиксела. Размерность массива с узором определяется так: 1024 бита можно разместить в 128 переменных по одному байту. Мы разместим их в 16 строках по 8 байт. Имеем 16 х х 8 х 8 = 1024 бита (или пиксела). 
Массивы объявлены глобально. Адреса массивов с узором подаются на вход функции glPolygonStipple:
GLubyte gSpade[] = // Узор - пики
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xlf, 0xff, Oxff, 0xf8, 0xlf, 0x00, 0x00, 0xf8,
0x01, OxcO, 0x03, 0x80, 0x00, 0x70, 0xOe, 0x00,
| 0x00, | 0x20, | 0x04, | 0x00, | 0x00, | 0x30 | , 0x0c, | 0x00, | ||
| 0x00, | 0x10, | 0x08, | 0x00, | 0x00, | 0x18 | , 0x18, | 0x00, | ||
| 0x07, | 0хс4, | 0x23, | 0xe0, | 0x0f, | 0xf8 | , 0xlf, | 0xf0, | ||
| 0x38, | 0xlc, | 0x38, | 0xlc, | 0x30, | 0x00 | , 0x00, | 0x0c, | ||
| 0x60, | 0x00, | 0x00, | 0x06, | 0x60, | 0x00 | , 0x00, | 0x06, | ||
| 0x60, | 0x00, | 0x00, | 0x06, | 0x60, | 0x00 | , 0x00, | 0x06, | ||
| 0x60, | 0x00, | 0x00, | 0x06, | 0x30, | 0x00 | , 0x00, | 0x0c, | ||
| 0x30, | 0x00, | 0x00, | 0x0c, | 0x18, | 0x00 | , 0x00, | 0x18, | ||
| 0х0е, | 0x00, | 0x00, | 0x70, | 0x03, | 0x00 | , 0x00, | 0xc0, | ||
| 0x00, | OxcO, | 0x03, | 0x00, | 0x00, | 0x70 | , 0x0e, | 0x00, | ||
| 0x00, | 0x18, | 0x18, | 0x00, | 0x00, | 0x0c | , 0x30, | 0x00, | ||
| 0x00, | 0x07, | OxeO, | 0x00, | 0x00, | 0x03 | , 0xc0, | 0x00, | ||
| 0x00, | 0x01, | 0x80, | 0x00, | 0x00, | 0x00 | , 0x00, | 0x00 | ||
| GLubyte | gStripU = | // Другой узор - | полоса | 
 | |||||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
| 0x66, | 0x66, | 0x66, | 0x66, | 0x33, | 0x33 | , 0x33, | 0x33, | ||
Функцию OnDraw замените целиком. Так же поступайте и дальше. Следите лишь за изменениями в функциях main, OnSize и init, которые понадобятся при радикальной смене режима передачи (rendering). Позже мы перейдем к передаче трехмерной графики, а пока режим тот же — двухмерная графика:
void _stdcall OnDraw()
{
//====== Стираем окно
glClear (GL_COLOR_BUFFER_BIT);
//====== Цвет фона (синеватый)
glColor3f (0.3f, 0.3f, 1.);
//==
