Листинг 5.8. Рисование сцены, прочитанной из SDL-файла

#include "SDL.h"

iimimmmmmmmm globals iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiin

Scene SCn;

// construct the scene object // создаем объект scene

//«««««««««««< displaySDL »»»»»»»»»»»»» void displaySDL(void)

{

glMatrixMode(GL_PROJECTIDN): // set the camera // устанавливаем камеру

glLoadldentityO:

double winHt - 1.0: // half-height of the window // половина высоты окна

gl0rtho(-winHt*64/48.0. winHt*64/48.0. -winHt. winHt. 0.1. 100.0):

glMatrixMode(GL_MODELVIEW):

glLoadldentityO:

gluLookAt(2.3. 1.3. 2. 0. 0.25. 0. 0.0.1.0.0.0):

glClear(gl_COLDR_BUFFER_bit | GL_DEPTH_BUFFER_BIT); // clear screen // очищаем экран

sen.drawSceneOpenGLC):

}

// end of display // конец отображения

5.6. Рисование трехмерных сцен с применением OpenGL

//««««««««««« main »»»»»»»»»»»»»>»»

void maindnt argc. char **argv)

{

g1utlnit(&argc. argv):

glutInitDisp1ayMode(GLUT_RGB | GLUT_DEPTH):

glutInitWindowSize(640. 480):

glutlnitwindowPositiondOO. 100):

glutCreatewindowCread and draw an SDL scene"): // «читаем и рисуем SDL-сцену»

glutDisplayFunc(displaySDL):

glShadeMode1(GL_SM00TH);

glEnable(GL_DEPTH_TEST);

glEnable(GL_NORMALIZE):

glViewportCO. 0. 640. 480):

sen.read("myScenel.dat"); // read the SDL file and build the objects // читаем SDL-файл и создаем объекты

glEnable(GL_LIGHTING):

scn.makeLightsOpenGLO: // scan the light list and make OpenGL lights // просматриваем список источников света // и создаем источники света OpenGL

glutMainLoopO:

}

В листинге 5.8 приведена программа, которая читает SDL-файл и рисует сцену. Программа эта очень короткая (но кроме нее, разумеется, должен быть загружен код для классов Scene, Shape и т. д.). Эта программа читает специальный SDL-файл myScenel.dat, который вновь рисует ту же сцену, что изображена на рис. 5.56. Отметим, что путем простой замены читаемого SDL-файла данная программа способна нарисовать любую сцену, описанную на языке SDL, без каких-либо изменений в ее коде.


⇐ Предыдущая| |Следующая ⇒