Отображение трехмерной сцены
case VK_RIGHT: ObjPos[0]+ - StepMen; break;
case VK_PRI0R: ObjPos[l]+ - StepMen; break; //Клавиша PageUp
case VK_NEXT: ObjPos[l]- - StepMen; break; // Клавиша PageDown
}
}
//Занесение матрицы в конвейер void SetProjectionObj(void) {
glMatrixMode(GL_PROJECTION);
//Указываем, что сейчас задаем матрицу проецирования glLoadldentityO; glMultMatrixf(&Projection[0][0]): }
Геометрическая модель сцены и функция ее отображения находятся в файле RenderGLcpp, код которого приведен в листинге 24.10.
Листинг 24.10
#include <windows.h>
#include <stdlib.h>
finclude <stdio.h>
#include <math.h>
#include <gl/gl.h>
finclude <gl/glu.h>
#include <gl/glaux.h>
#include"main.h"
#include"GLDat.h"
HWND hWnd;
HGLRC hGLRC;
HDC hDC;
RECT Client;
int LensBlind -1;
//Шаблон дома.
//Нормаль третьей точки каждой грани отвечает за цвет.
USEVERTEX1 SetkaKub[8] - {
{4500. 15000. 17000. 0. 0. 0.8}.
{-4500. 15000. 17000. 0. 0. -0.4}.
{-4500. 000. 17000. 0. 0. -0.4}.
{4500. 000. 17000. 0. 0. 0.8}.
{4500. 15000.-17000. 0. 0. -1}.
{-4500. 15000.-17000. 0. 0. -0.6}.
{-4500. 000.-17000. 0. 0. -0.6}.
{4500. 000. -17000. 0. 0. -1}};
unsigned short IndexKubl[10] - {3.0.7.4.6.5.2.1.3.0}:
//При отображении сцена будет перенесена в точку мира GLfloat 0bjPos[3];
//Дорога - одна грань
USEVERTEX1 SetkaGran[4] - {
{5000.0. -1800.0. 210000.0.0.-1.0}.
{-5000.0. -1800.0. 210000.0.0.-1.0}.
{-5000.0. -1800.0. -2000.0. 0.-1.0}.
{5000.0. -1800.0. -2000.0. 0.-1.0}
}:
//Земля - одна грань USEVERTEX1 SetkaGranl[4] - { {65000.0. -1800.0. 205000.0.0.-1.0}. {5000.0. -1800.0. 205000.0.0.-1.0}.
продолжение &
Геометрические преобразования
Листинг 24.10 (продолжение)
{5000.0. -1800.0. -2000.0. 0.-1.0}. {65000.0. -1800.0. -2000.0. 0.-1.0} }:
//Земля - вторая грань USEVERTEX1 SetkaGran2[4] - { {-5000.0. -1800.0. 210000.0. 0.-1.0}. {-60000.0. -1800.0. 210000.0. 0.-1.0}. {-60000.0. -1800.0. -2000.0. 0.-1.0}. {-5000.0. -1800.0. -2000.0. 0.-1.0} }:
//Точки привязки домов в системе координат сцены ekzmpl Ekzmpl0bj[8] - { {-15000.0. -1800.0. 40000.0. 0x9090b0}. {15000.0. -1800.0. 40000.0. 0х9090В0}. {-15000.0. -1800.0. 90000.0. 0x9090b0}. {15000.0. -1800.0. 90000.0. 0х9090В0}. {-15000.0. -1800.0. 140000.0. 0х9090В0}. {15000.0. -1800.0. 140000.0. 0х9090В0}. {-15000.0. -1800.0. 190000.0. 0х9090В0}. {15000.0. -1800.0. 190000.0. 0х9090В0} }: