Иллюстрированный самоучитель по Visual Studio.Net


Создание консольного проекта - часть 2


#define Line(xl,yl,x2,y2) \

glBegin(GL_LINES); \

glVertex2d ( (xl), (yl)); \

glVertex2d ((x2),(y2)); \

glEnd() ;

//====== Реакция на сообщение WM_PAINT

void _stdcall OnDraw()

{

//====== Стираем буфер кадра (framebuffer)

glClear (GL_COLOR__BUFFER_BIT) ;

//====== Выбираем черный цвет рисования

glColorSf (0., 0., 0.);

//=== В 1-м ряду рисуем 3 линии с разной штриховкой

glEnable (GL_LINE_STIPPLE);

glLineWidth (2.);

glLineStipple (1, 0x0101); // dot

Line (50., 125., 150., 125.);

glLineStipple (1, OxOOFF); // dash

Line (150., 125., 250., 125.);

glLineStipple (1, OxlC47); // dash/dot/dash

Line (250., 125., 350., 125.);

//====== Во 2-м ряду то же, но шире в 6 раз

glLineWidth (6.);

glLineStipple (1, 0x0101); // dot

Line (50., 100., 150., 100.);

glLineStipple (1, OxOOFF); // dash

Line (150., 100., 250., 100.);

glLineStipple (1, OxlC47); // dash/dot/dash

Line (250., 100., 350., 100.);

//== Во 3-м ряду 7 линий являются частями

//== полосы (strip). Учетверенный узор не прерывается

glLineWidth (2.);

glLineStipple (4, OxlC47); // dash/dot/dash

glBegin (GL_LINE_STRIP);

for (int i =1; i < 8; i++)

glVertex2d (50.*i, 75.); glEnd() ;

//== Во 4-м ряду 6 независимых, отдельных линий

//== Тот же узор, но он каждый раз начинается заново

for (i = 1; i < 7; i++)

{

Line (50*1, 50, 50* (i+1), 50);

}

//====== во 5-м ряду 1 линия с тем же узором

glLineStipple (4, OxlC47); // dash/dot/dash

Line (50., 25., 350., 25.);

glDisable (GL_LINE_STIPPLE); glFlush ();

}

//===== Реакция на WM_SIZE

void _stdcall OnSize (int w, int h)

{

glViewport (0, 0, (GLsizei) w, (GLsizei) h);

glMatrixMode (GL_PROJECTION); glLoadldentity();

//====== Режим ортографической проекции

gluOrtho2D (0.0, double(w), 0.0, double(h));

}

//====== Настройки

void Init()

{

//====== Цвет фона - белый

glClearColor (1., 1., 1., 0.);

//====== Нет интерполяции цвета при растеризации

glShadeModel (GL_FLAT); }

void main()

{

//=== Установка pixel-формата и подготовка окна OpenGL



Начало  Назад  Вперед