ПредишенСледващото

АРУБА НЕЗАБАВЕН WI-FI: прост, мощен и достъпни

Информация за функционирането на библиотеката
OpenGL библиотека може да се мисли като робот, който във всеки един момент е в някои държавни и изпълнява исканията, получени в съответствие с него. С други думи, библиотеката има набор от вътрешни променливи, които се използват, за да се обади на неговите функции. Стойностите на тези променливи може да се променя, като по този начин се постигне желаното действие на съответната функция. Например, процедурата

промяна на текущия цвят на синьо. След като изпълните тази команда, всички обекти ще бъдат създадени от синия цвят.
За да се гарантира ефекта на анимация, т.е. движението на обектите и промяна на техните свойства, се извършва непрекъснато се обновяват изображения. Скоростта на прекрояване на сцената (колко пъти в секунда), зависи основно от работата на графичния процесор и, разбира се, на задачите, които са му възложени. Следователно, скоростта на възпроизвеждане варира. За да се осигури еднакво възпроизвеждане на видео, можете да преминете към изкуствено забавя, вързана на системния часовник.
Актуализация механизъм в цикъла реализира с използването на четири функции:
анулира първоначален (свободен); - това е действия, извършени по-рано, преди началото на основната линия, например инициализиране променливи, настройка на параметрите;
нищожен променям (инт, вътр); - тя е на действията, свързани с мащаба на сцената, извършено когато прозорецът е оразмерен;
невалидни дисплей (свободен); - основната част, изготвяне на всички обекти в сцената;
нищожен празен ход (недействителни); - функцията се извиква на всеки етап от цикъла. Обикновено му проблем - увеличаването на тезгяха, което се равнява на времето и дисплея на повикване.
На следващо място, ние минаваме библиотеката указатели към тези функции и да стартирате основната линия.
проектни файлове и себе си (файл OpenGLSample.cpp) код, който можете да намерите в приложената към списание "PC World-ROM."

Производството на основни форми
Първо, създаване на небесата и на земята.
За да направите това, ние използваме метода за създаване на графични примитиви чрез набор върха. Координати на върховете определения ред
glVertex3d (GLdouble х, у GLdouble, GLdouble Z),
където GLdouble - тип, и се превръща в двойно обратно.
Върховете са комбинирани в един обект със структурата:
glBegin (режим GLenum);
glVertex3d (х1, у1, Z1);
.
glVertex3d (хп, ин, Zn);
glEnd ();

Тук параметъра режим определя как тълкуването на списъка с връх. Ето и някои от неговите ценности:
GL_POINTS - създадени множество от точки;
GL_TRIANGLES - тройни на върховете определят отделните триъгълници;
GL_QUADS - четири върховете на даден индивид каре.

Забележка координира
Не е свързано с теорията, можем да кажем, че ние наистина се грижим за абсолютното координира ценности и значима корелация между двете. Дизайн етап може да бъде в една от най-удобните числа. Регулиране на позицията на камерата ще помогне glViewPort () процедура.
Земята ще бъде правоъгълник лежи в равнина Y = 0, трябва небето като два правоъгълника - един в равнина Z = -length, другият хоризонтално в равнина Z = височина. По този начин,

анулира DrawGround () glColor3f (1.0,1.0,1.0);
glBegin (GL_QUADS);
glVertex3d (ширина, -1.0, дължина);
glVertex3d (ширина, -1.0, -length);
glVertex3d (-width, -1.0, -length);
glVertex3d (-width, -1.0, дължина);

glVertex3d (ширина, -1.0, -length);
glColor3f (0.10,0.20,0.30);
glVertex3d (ширина, височина, -length);
glVertex3d (-width, височина, -length);
glColor3f (0.35,0.65,0.99);
glVertex3d (-width, -1.0, -length);

glColor3f (0.10,0.20,0.30);
glVertex3d (ширина, височина, -length);
glVertex3d (-width, височина, -length);
glVertex3d (-width, височина, дължина);
glVertex3d (ширина, височина, дължина);
glEnd ();
>
Тук, цветът е посочено в RGB формат в реални числа в интервала [0,1]. При използване на прозрачност позоваване цвят може в RGBA формат използват процедури glColor4d (R, G, б, алфа).
Всъщност, на този принцип - да се на върха и на върховете групи разбиране как някои обекти - и въз основа графично моделиране. За да създадете сложни предмети, като модели на хора, облаци, трева, който трябва да зададем много (понякога астрономически) брой върхове, както и изчисляването на координатите се извършва ръчно. Но не се отчайвайте, за автоматизация на развитието на този процес вече е в ход.

осветление
При промяната на цвета осветление се отнася до боядисването на обекта, в зависимост от местоположението му спрямо източника на светлина. По подразбиране, има един източник на разсеяна светлина, и можете да добавяте нови към тяхната позиция, на ъгъла на разсейване, цвят и други параметри. процедура Осветление включени glEnable (GL_LIGHTING) и изключва чрез glDisable (GL_LIGHTING).
Осветлението на обекта, вида хвърлят сенки и собствената си засенчване зависят от посоката на нормалите на височините, както и материала на обекта.
Нормалните glNormal3d процедурата, (X, Y, Z), се използва за glVertex3d ().
За да присвоите на обект материал е необходимо преди да се направят върхове причинят следната процедура:

GLfloat излъчващ [4] = <0.0f,0.0f,0.0f,0.0f>;
GLfloat дифузен [4] = <0.98f,0.836f,0.35f,1.0f>;
GLfloat огледален [4] = <0.0f,0.0f,0.0f,0.0f>;
GLfloat стайна [4] = <0.98f,0.836f,0.35f,1.0f>;
glMaterialfv (GL_FRONT_AND_BACK, GL_EMISSION, излъчващ);
glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, дифузна);
glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, огледален);
glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT, на околната среда);
glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 10);
glEnable (GL_COLOR_MATERIAL);

След изготвянето на обект, което трябва да се изключи възможността:

При използване на OpenGL библиотеките трябва да следва едно просто правило - да върне всички променени характеристики в първоначалното състояние веднага след употреба. Тя ще ви спести много време и усилия, и оптимизация и премахване на ненужни команди можете да направите в последния етап, когато е сигурно, че няма да се правят никакви промени в проекта.

текстуриране
Текстура прави обект реалистичен и колоритен, но също така ви позволява да се постигне някои специални ефекти. Като текстура, можете да използвате изображения в BMP формат. Ще приложим функцията текстура товарене, изпълнението на която е показан в BmpLoad.cpp файл. Ето как работата се извършва с текстура:

  1. текстури масив [NTEXT] стойности тип GLuint където чрез процедура glGenTextures записани (NTEXT, текстури) идентификатори. На тях впоследствие ще се нарича "свързан", за да ги текстура.
  2. Масивът байт прочете съдържанието на файла, а след това на масива е зареден във вътрешна библиотека ресурси (вж. OpaqTexture процедура), последният установява връзка с избрания номер текстурата идентификатор стойност.
  3. Когато се обаждате glBindTexture (GL_TEXTURE_2D, номер); текущия набор библиотека е тази текстура обект.

Включете земята в пустиня.
Имаме BMP-файл с изображение на пясък. Заредете според по-горе алгоритъм и "разтегнете" правоъгълника на земята. За да се използва тази процедура glTexCoord2d (I, J), където и й - текстура координати, текстура показва квадрата [0,1] х [0,1]. На следващо място, трябва да се обадите glVertex, и до върха ще бъде "закован", каза текстура точка. След това постепенно ще "намазват" в продължение на голям правоъгълник. Но ние трябва да се уверим, че текстурата многократно умножена по цялата земя. За да направите това, начертайте правоъгълник на земята не е твърда, а под формата на матрица, състояща се от малки правоъгълници, всеки от които е "разтегнат" текстура. Ние описваме правоъгълници банда определяне GL_QUAD_ Газа през glBegin. Това действие обединява чифт точки в сегмента, като ги свързва с предишната двойка, и се отнася към всичките четири като четириъгълник, а след това се присъедини към него на следващата двойка и т.н. Резултатът е лента.
Описание на земя е както следва:

glNormal3d (0.0, 1.0, 0.0);
Int к = (междинно съединение) (ширина / дължина);
glBindTexture (GL_TEXTURE_2D, текстури [0]);
за (INT I = 0; I Местоположение необходимите файлове в системата

Свързани статии

Подкрепете проекта - споделете линка, благодаря!