Простая программа на OpenGL
Первая программа OpenGL
Файлы к лабораторной работе Вы можете скачать здесь.
Реализация библиотеки Microsoft OpenGL (Open Graphics Library) включает в себя следующие компоненты:
- Набор базовых команд (около 300) для описания форм объектов, преобразования координат, управления освещением, цветом, текстурой, туманом, вывода растровых картинок и т.д. Имена базовых команд в реализации на C начинаются с префикса gl
- Библиотеку утилит ( GLU - библиотеку). Команды этой библиотеки дополняют базовые функции OpenGL и позволяют выполнять триангуляцию многоугольников, создавать и выводить стандартные фигуры (сферы, цилиндры, ...), строить сплайновые кривые и поверхности, обрабатывать ошибки. Имена команд библиотеки утилит в реализации на C начинаются с префикса glu
- Дополнительную библиотеку OpenGL ( AUX - библиотеку). Библиотека содержит функции управления окнами, обработки событий, управления цветовой палитрой, вывода стандартных 3D -объектов (тор, тетраэдр, ...), управления двойной буферизацией. Имена команд этой библиотеки в реализации на C начинаются с префикса aux
- Функции, соединяющие OpenGL с Windows ( WGL - функции). Эти функции управляют контекстом воспроизведения, списками команд, шрифтами. Имена WGL - функций начинаются с префикса wgl
- Win32 - функции для управления форматов пикселов и двойной буферизацией. Они заменяют библиотеку AUX.
Создание заготовки приложения OpenGL
На этом этапе мы создадим простую программу с использованием графической библиотеки OpenGL. Для этого мы создадим консольное приложение на C++ и настроим его на вызов функций библиотеки OpenGL.
- Выполните команду меню оболочки File/New/Project
- В появившемся окне мастера создания заготовки проекта задайте имя проекта Simple, выберите каталог размещения проекта и другие установки, как показано на рисунке
- Переименуйте функцию _tmain() файла Simple.cpp в main(), уберите параметры в заголовке определения функции main() и возвращаемое значение, чтобы код выглядел так
// Simple.cpp : Defines the entry point for the console application. // #include "stdafx.h" int main() { }Листинг 19.1. Начальная заготовка файла Simple.cpp
Теперь необходимо сообщить линковщику о необходимости использования библиотечных файлов OpenGL (хотя это и не обязательно, поскольку далее мы используем вспомогательный заголовочный файл glut.h, где все это будет прописано). Для этого:
- Выполните команду меню оболочки Project/Simple Properties и в открывшемся диалоговом окне в поле Linker/Input/Additional Dependencies введите разделенные пробелами наименования библиотек
opengl32.lib glu32.lib glaux.lib
Необходимые подключемые файлы OpenGL
хранятся по адресу: C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl |
Необходимые статические библиотеки OpenGL
хранятся в файловой системе компьютера по адресу: C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib |
Необходимые динамические библиотеки OpenGL
хранятся в системном каталоге по адресу: C:\WINNT\system32 |
Но нам понадобится дополнительно еще одна статическая библиотека glut32.lib и одна динамическая библиотека glut32.dll, а также один заголовочный файл glut.h - все они находятся в каталоге Source, прилагаемом к этой лабораторной работе!!!
- Скопируйте из каталога Source данной лабораторной работы файл glut32.lib в каталог статических библиотек, файл glut32.dll в каталог динамических библиотек, а файл glut.h - в каталог размещения подключаемых файлов Вашего компьютера (примерные адреса размещения перечислены выше)
- Через панель Solution Explorer оболочки откройте файл stdafx.h, который создал мастер проекта, и добавьте в самое его начало после инструкции #pragma once код подключения стандартных заголовочных файлов
// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #pragma once #include <windows.h> #include <gl/gl.h> #include <gl/glu.h> #include <gl/glut.h> #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <stdio.h> #include <tchar.h> // TODO: reference additional headers your program requires hereЛистинг 19.6. Добавление стандартных заголовков в файл stdafx.h