Введение в OpenGL - страница 14

Шрифт
Интервал

стр.

и в поле Object/library modules набрать названия нужных библиотек: opengl32.lib, glu32.lib, glut32.lib и, если надо, glaux.lib.

• Для компиляции выбрать Build→Build program.exe, для выполнения - Build→Execute program.exe.

• Чтобы при запуске не появлялось текстовое окно, надо выбрать Project→Settings→Link и в поле Project Options вместо ‘subsystem:console’ набрать ‘subsystem:windows’,и набрать там же строку ‘/entry:mainCRTStartup’

Когда программа готова, рекомендуется перекомпилировать ее в режиме ‘Release’ для оптимизации по быстродействию и объему. Для этого сначала надо выбрать Build→Set Active Configuration… и отметить -Win32 Release, а затем заново подключить необходимые библиотеки.

Создание приложения в среде Borland C++ 5.02

Как и для Visual C++, сначала надо обеспечить наличие файлов glut.h, glut32.lib, glut32.dll в каталогах…\BorlandC\Include\Gl,…\BorlandC\Lib,…\Windows\System соответственно. Также в этих каталогах надо проверить наличие файлов gl.h, glu.h, opengl32.lib, glu32.lib, opengl32.dll, glu32.dll, которые обычно входят в состав BorlandC++ и Windows. При этом надо учитывать, что версии Microsoft файлов opengl32.lib, glu32.lib, glut32.lib для Borland C++ не подходят и следует использовать только совместимые версии. Чтобы создать такие версии, надо использовать стандартную программу ‘implib, которая находится в каталоге…\BorlandC\Bin. Для этого надо выполнить команды вида implib…\BorlandC\Lib\filename.lib…\filename.dll для перечисленных файлов, которые создают нужный *.lib файл из соответствующего *.dll файла. Кроме того, надо отметить, что компилятор BorlandC не может по неизвестным причинам использовать файл glaux.lib, входящий в состав BorlandC++5.02, при компиляции приложения, использующего библиотеку GLAUX, поэтому возможно от этой библиотеки придется отказаться. Для создания приложения надо выполнить следующие действия:

• Создание проекта: для этого надо выбрать Project→New Project и заполнить поля в окне Target Expert следующим образом: в поле Platform выбрать Win32,в поле Taget Model выбрать Сonsole, нажать Advanced и отменить выбор пунктов *.rc и *.def.

• Подключить к проекту библиотеки OpenGL. Для этого надо выбрать в окне проекта название исполняемого файла проекта (*.exe) и нажав правую кнопку мыши выбрать в контекстном меню пункт Add node. Затем надо определить положение файлов opengl32.lib, glu32.lib, glut32.lib.

• Для компиляции выбрать Project→Build All, для выполнения Debug-›Run.

Пример программы

Результатом выполнения этой программы является построение тетраэдра с вращающимися вокруг него кольцами, на которые нанесена текстура. В среде MS Visual C++ программа может компилироваться без изменений, а при компиляции в Borland C++ придется закомментировать вызов и описание функции TextureInit(), после чего не будет проводиться наложение текстур. Как было сказано выше, попытка использовать функции из библиотеки GLAUX приводит к сообщению об ошибке при компиляции программы.

При компиляции программы в MS Visual C++ файл ‘texture.bmp’ надо поместить в каталог проекта или указать полный путь к нему, используя символ ‘/’. Если путь не указан, то при запуске исполняемого файла из операционной системы, файл с текстурой должен находиться в том же каталоге.

>#include

>#include

>#include

>#define TETR_LIST 1

>GLfloat light_col[] = {1,1,1};

>float mat_diff1[]={0.8,0.8,0.8};

>float mat_diff2[]={0.0,0.0,0.9};

>float mat_amb[]= {0.2,0.2,0.2};

>float mat_spec[]={0.6,0.6,0.6};

>float shininess=0.7*128, CurAng=0, RingRad=1, RingHeight=0.1;

>GLUquadricObj* QuadrObj;

>GLuint TexId;

>GLfloat TetrVertex[4][3], TetrNormal[4][3];

>//--Вычисление нормали к плоскости, задаваемой точками a,b,c----------//

>void getnorm (float a[3],float b[3],float c[3],float *n) {

> float mult=0;

> n[0]=(b[1]-a[1])*(c[2]-a[2])-(b[2]-a[2])*(c[1]-a[1]);

> n[1]=(c[0]-a[0])*(b[2]-a[2])-(b[0]-a[0])*(c[2]-a[2]);

> n[2]=(b[0]-a[0])*(c[1]-a[1])-(c[0]-a[0])*(b[1]-a[1]);

> //--Определение нужного направления нормали: от точки (0,0,0)---------//

> for (int i=0;i<3;i++) mult+=a[i]*n[i];


стр.

Похожие книги