Листинг 22.22
ColorFon Fon(180.190.180); ColorFon FonGrid(0.255.255):
GRIDBALL *Grid_l - new GRIDBALL(Fon.0.898.3.0.3.0); GRIDBALL *Grid_2 - new GRIDBALL(FonGrid.0.9251 ); GLOBE Globe(Grid_l.Grid_2.true.2.Of):
void RenderBalKHWND hWnd) {
glCIearColor(0.97f.0.97f.0.98f.1.Of): glClearDepth(l.O):
glClear( GL_C0L0R_BUF F ER_BIT |GL_D E PTH_BU F F ER_BIT ); glEnable(GL_DEPTH_TEST); //Включение работы с Z-буфером. Globe.RenderO:
SwapBuffers(wglGetCurrentDCO) : }
Обращаясь к функциям OpenGL, изображение шара с наложенной текстурой можно было вывести двумя строчками кода, а не разрабатывать целый проект. Но это будет картинка, пригодная только для вывода заставки. Проделанная же выше работа может быть полезна не только для демонстрации освещения. Этот блок может быть использован при разработке некоей системы поиска и хранения данных, привязанных к географическим координатам. В подобную парадигму укладываются хранение данных о распределении полезных ископаемых в масштабах всей Земли, сведения о движении косяков рыб, данные метеорологических наНаложение текстур в OpenGL
блюдений и иная информация глобального масштаба. Области Земли, для которых в информационной системе есть данные запрашиваемого типа, можно наглядно показать на глобусе при помощи цветового выделения (см. проект Поиск_на_Гло-бусе). Для решения такой задачи код цвета присвоен не шару в целом, а каждой вершине сетки. Интерфейс быстрого поиска необходимых данных в проекте По-иск_на_Глобусе основан на выделении области поиска данных мышью на шаре. Для разработки проекта необходимо наложить на шар текстуру с картой мира, определить методы вращения глобуса и научиться определять по экранным координатам щелчка мыши географические координаты на повернутом глобусе. Первая из этих задач, наложение текстуры, будет рассмотрена в следующем разделе.
Наложение текстур в OpenGL
Для наложения текстуры на объект необходимо прежде всего создать текстуру. Для этого нужно записать в оперативную память растровое изображение и получить указатель на графические данные. При изучении GDI уже рассматривались ввод картинки и получение на нее указателя, но сейчас следует воспользоваться программой загрузки, поставляемой вместе с OpenGL. После этого необходимо запросить у операционной системы массив номеров, которыми можно идентифицировать текстуры. Используя полученный номер, размеры текстуры, указатель на битовую карту и другие данные, уже можно создать текстуру. После этого битовая карта больше не нужна и может быть удалена из памяти.