В этом шаге рассмотрим рисование обычных линий.
Как обычно создадим MFC проект, сделаем все необходимые дополнения для OpenGL. Добавим переменную BOOL m_Strip как private элемент класса C...View. Добавим обработчик OnLButtonDown(...):
void CExampleView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(m_Strip) m_Strip = FALSE; else m_Strip = TRUE; InvalidateRect(NULL, FALSE); CView::OnLButtonDown(nFlags, point); }
В конструкторе класса C...View присвоим этой переменной значение FALSE.
Новая функция OnDraw(...) теперь будет выглядеть так:
void CExampleView::OnDraw(CDC* pDC) { CRect clientRect; CExampleDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here GetClientRect(&clientRect); glViewport(0, 0, clientRect.right, clientRect.bottom); glClearColor (0.5, 0.5, 0.75, 1.0); // цвет фона glClear (GL_COLOR_BUFFER_BIT); // очистка буфера цвета glLineWidth (20); // размер точек glColor3f (1.0, 0.0, 0.5); // текущий цвет примитивов if(!m_Strip) glBegin (GL_LINES); else glBegin (GL_LINE_STRIP); glVertex2f(-0.5f,0.5f); glVertex2f(0.5f,-0.5f); glVertex2f(-0.5f,-0.5f); glVertex2f(0.5f,0.5f); glEnd(); }
Программа просто рисует диагонали в центре окна, а при нажатии на кнопку мыши замыкает их. Как нетрудно догадаться, рисование линий включается с помощью аргумента GL_LINES функции glBegin. А рисование линий в режиме "последняя точка предыдущей линии - это первая точка следующей" включается аргументом GL_LINE_STRIP.
Соберите проект и понажимайте левую кнопку мыши.