![]() |
Замъглявания |
OpenGL предоставя наготово функцията glFog( ), с която можете да създадете съвсем реалистична мъгла във вашата триизмерна графика. Самата функция има четири разновидности, всяко от които си има определено предназначение :
void glFogf( GLenum pname, GLfloat param ); void glFogi( GLenum pname, GLint param ); void glFogfv( GLenum pname, const GLfloat *param ); void glFogiv( GLenum pname, const GLint *param ); Като за начало трябва да укажете, че искате да използвате замъгляване. Трябва да зададете на фунцкията glEnable( ) аргумента GL_FOG. След това е необходимо да укажете какъв тип мъгла желате да използвате. За да направите това е нужно да извикате една от първите два вида на функцията glFog*( ), като подадете за първи аргумент GL_FOG_MODE, а за втори един от тези : GL_LINEAR - използва се за стандартни замъглявания ( най-качествен режим на замъгляване ) GL_EXP - също като GL_LINEAR, с известна разлика, която ще видите след малко GL_EXP2 - използва се за силни замъглявания. След това е нужно да определите цвета на мъглата, което най-добре може да извършите с функцията glFogfv( ), където за първи аргумент подадете GL_FOG_COLOR, а за втори - името на float масива в който сте съхранили RGBA цвета ( както при динамичната светлина ). Акo използвате мъгла тип GL_LINEAR е нужно да определетите на колко единици от позицията на камерата да започва мъглата и след колко единици обектите да са напълно скрити в нея. Това става като подадете за първи аргумент на функцията glFogf( ) / glFogi( ) съответно аргументите GL_FOG_START или GL_FOG_END, a за втори аргумент на функцията определената от вас числова стойност. Например : glFogi( GL_FOG_START, 10 ). Добре е мъглата да започва винаги на няколко единици пред камерата, защото така се постигат по-добри резултати както във визуално качество, така и в производителност от графичния ускорител. Ако използвате GL_EXP или GL_EXP2 тип мъгла е нужно да определите плътност за мъглата. За да направите това е достатъчно да подадете GL_FOG_DENSITY като първи аргумент на функцията glFogf( ), a за втори аргумент - стойност в интервала 0.0 - 1.0 , като по-голямо число води до по-силно замъгляване. Ако не определите плътност на мъглата, OpenGL приема по подразбиране числото 1.0 Самото замъгляване се отразява само на цвета на обектите, затова е нужно в началото на вашата рендерираща функция след изчистването на буферите, да запълните цветовия буфер с цвета на мъглата или по-просто казано цвета на фона трябва да e еднакъв с цвета на мъглата. Както знаете вече, цветович буфер се запълва с функцията glClearColor( ). Ето как бързо и лесно можете да реализирате един добър ефект. Tук можете да хвърлите едно око на кода използващ замъгляване. |
Автор: Иван Георгиев Иванов [ Nickname: tuschko ]
e-mail: tuschko@abv.bg |
Този сайт е хостван от сървър на Headoff Gaming Intranetwork |
![]() |