Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИГС / IGS_2014-2015 / Lab_04 / labor_04.doc
Скачиваний:
22
Добавлен:
17.04.2018
Размер:
303.62 Кб
Скачать

Создание консольного приложения Windows для работы с библиотекой OpenGl.

Если нас не интересует графика, которую предоставляет система Windowsв видеAPI-функций, то можно создать приложение в консольном режиме, и пользоваться только библиотекойOpenGL.

Покажем, как можно создать проект в консольном режиме для работы сOpenGL. Пусть проект находится в папкеglopen02. В файлеglopen02.cppбудет находиться код программы, содержащий главную функциюmain, внешне похожую на главную функциюDOS-программы. Однако это только внешнее сходство, функцияmainбудет получать сообщения, и обрабатывать их. Для обработки сообщений будут использоваться функции библиотекиGLAUX. Поэтому эту библиотеку надо подключить к программе.

Ниже показана структура функции main.

#include <afxwin.h>

#include <gl\gl.h>

#include <gl\glu.h>

#include <gl\glaux.h>

void DrawOpenGL(void);

void main()

{

//определяем окно для рисования на экране

auxInitPosition(100, 50, 600, 450);

//устанавливаем режимы работы OpenGL

auxInitDisplayMode(AUX_SINGLE | AUX_RGB);

//производит регистрацию окна в операционной системе

auxInitWindow("Console Application");

//обрабатывает сообщения,

//вызывается функция DrawOpenGL в ответ на сообщение WM_PAINT

auxMainLoop((AUXMAINPROC)DrawOpenGL);

}

Чтобы настроить проект в консольном режиме на работу с OpenGLнадо вручную добавить нужные библиотеки.

Рассмотрим создание проекта. Пусть рабочий каталог Workнаходится на дискеD.

Запустим VISUALC++ и в главном меню в пунктеFileпройдем по цепочке:File – New – Project, где выбираем пунктWin32 Console Application. В окнеLocationуказываем путьD:\Work\, в окнеProject nameнабираемglopen02, нажимаемOK.

Далее выбираем пункт An empty project, нажимаемFinishи нажимаемOK.

После этого в каталоге D:\Workпоявится подкаталогglopen02. Поместим в этот каталогD:\Work\glopen02 файл glopen02.cpp, и продолжим создавать проект.

В главном меню слева имеется окно (Workspace) у которого внизу две надписиClassViewиFileView. ВыбираемFileViewи вверху слева щелкаем по плюсу +.

Подводим мышку к надписи Source filesи щелкаем правой кнопкой. В появившемся маленьком меню выбираем пунктAdd Files to Folder. Указываем путь к файлуglopen02.cpp, в рассматриваемом случае этот путь следующийD:\Work\glopen02\. Подсоединяем файлglopen02.cppк проекту. В результате у пунктаSource filesпоявится плюс +.

В главном меню в пункте Projectпройдем по цепочке:Project – Settings – Link. В окнеObject/library modulesдобавим библиотечные файлыopengl32.lib, glu32.libбиблиотекиOpenGLи библиотечный файлglaux.libбиблиотекиGLAUX. После щелчкаOKпроект будет настроен нужным образом.

Функцию DrawOpenGLвозьмем из программыglopen01.cpp, оставив в ней только функции рисованияOpenGL.

//рисуем графические объекты

void DrawOpenGL(void)

{

//устанавливаем двухмерную ортогональную область просмотра

//определяем работу с матрицей проекции

glMatrixMode(GL_PROJECTION);

//заменяет текущую матрицу единичной

glLoadIdentity();

//устанавливаем двухмерную ортогональную область просмотра

gluOrtho2D(-400, 400, -300, 300);

//устанавливаем текущий цвет

glColor3f(0.0, 1.0, 0.0);

//рисуем треугольник

glBegin(GL_TRIANGLES);

glVertex2f(-100, -100);

glVertex2f(0, 100);

glVertex2f(100, -100);

glEnd();

//устанавливаем текущий цвет

glColor3f(1.0, 0.0, 0.0);

//толщина линий - 6 пикселей

glLineWidth(6.0);

//рисуем связанную группу отрезков

glBegin(GL_LINE_STRIP);

glVertex2f(0, 150);

glVertex2f(150, -130);

glVertex2f(-150, -130);

glVertex2f(0, 150);

glEnd();

//блокирует выполнение программы, пока не будут

//выполнены все вызванные перед ней команды OpenGL

glFinish();

}

Результат работы программы показан на Рис.2.

Рис.2.

Изображение создано в консольном режиме. Цвет фона черный.

Рис.3.

Изображение создано в консольном режиме. Цвет фона синий.

(Изображения на Рис.2, 3 созданы программой glopen02.cpp.)

Черный фон на Ри.2 можно сделать любого цвета. Ниже приводится код, который создает синий цвет фона.

//задаем цвет фона

glClearColor(0,0,0.5, 1.0f);

glClear(GL_COLOR_BUFFER_BIT);

На Рис.3 показан тот же результат, что и на Рис.2, но с синим фоном.

Соседние файлы в папке Lab_04