Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИГС / 5_i_poslednyaya / glopen10 / Labor_07.doc
Скачиваний:
24
Добавлен:
29.05.2018
Размер:
416.26 Кб
Скачать

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

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

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

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

#include <windows.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.

Запустим VISUAL C++ и в главном меню в пункте 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 – Properties – Configuration Properties. Выбираем пункты Linker – Command Line , и в окне Additional options, добавим библиотечные файлы opengl32.lib, glu32.lib библиотеки OpenGL, и библиотечный файл glaux.lib библиотеки GLAUX. После щелчка OK компилятор VC++ будет настроен нужным образом.

Замечание. Если при компиляции программы возникнут проблемы с функцией auxInitWindow(), то надо сменить кодировку символов. Для этого, в главном меню в пункте Project пройдем по цепочке: Project – Properties – Configuration Properties. Выбираем пункты General – Character Set, и устанавливаем значение Use Multi-Byte Character Set.

Функцию 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, но с синим фоном.