Lecture

Created: 12.07.2010 | Level: specialist | Access: free
Самостоятельная работа 19:

Простая программа на OpenGL

Annotation: Первая программа OpenGL. Создание заготовки приложения OpenGL. Создание простого графического окна. Разбор кода Simple. Рисование прямоугольника внутри окна (GLRect). Масштабирование рисунка под размеры окна. Анимация прямоугольника с помощью OpenGL и GLUT (Bounce). Библиотечная функция таймера. Двойная буферизация.

Первая программа 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, выберите каталог размещения проекта и другие установки, как показано на рисунке

  • Оставьте установки мастера по умолчанию и щелкните на кнопке Finish

  • Переименуйте функцию _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

  • GL.h
  • GLU.h
  • GLAux.h

хранятся по адресу:

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl

Необходимые статические библиотеки OpenGL

  • OpenGL32.Lib
  • GLU32.Lib
  • GLAux.Lib

хранятся в файловой системе компьютера по адресу:

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib

Необходимые динамические библиотеки OpenGL

  • OPENGL32.DLL
  • glu32.dll

хранятся в системном каталоге по адресу:

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