Опубликован: 13.07.2010 | Доступ: свободный | Студентов: 891 / 20 | Оценка: 4.40 / 4.20 | Длительность: 77:34:00
Самостоятельная работа 19:

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

Аннотация: Первая программа OpenGL. Создание заготовки приложения OpenGL. Создание простого графического окна. Разбор кода Simple. Рисование прямоугольника внутри окна (GLRect). Масштабирование рисунка под размеры окна. Анимация прямоугольника с помощью OpenGL и GLUT (Bounce). Библиотечная функция таймера. Двойная буферизация.
Ключевые слова: opengl, OPEN, Graphics, library, текстура, базовая функция, AUX, обработка событий, 3D, буферизация, win32, приложение, finish, определение функции, заголовочный файл, linker, additive, dependency, динамическая, pragma, файл реализации, CPP, оболочка, dialog, программа, utility, toolkit, mark, меню, GUI, файл, прототип функции, макрос, RGB, call, back, управление курсором, аргумент, буфер, очередь, команда, драйвер, быстродействие, связь, аппаратное обеспечение, del, диалоговое окно, встроенные типы, пользователь, ПО, функция обратного вызова, прерывание, функция, поле, информация, визуализация, прямоугольник, плоскость, отображение, площадь, коррекция, координаты, операции, переменные состояния, доступ, параметр функции, система координат, 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