Manual de Apoio 2010
Manual de Apoio 2010
Manual de Apoio 2010
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Fog Mo<strong>de</strong> Fog EquationGL LINEAR f = end–cend–startGL EXP f = e –d×cGL EXP2 f = e –(d×c)2Tabela 6.3: Fog EquationsA Tabela 6.4 <strong>de</strong>screve as equações para as várias equações possíveis.On<strong>de</strong> c é a distância ao observador, start é o valor <strong>de</strong> GL FOG START e end é o valor <strong>de</strong> GL FOG END. O valord é a <strong>de</strong>nsida<strong>de</strong> do nevoeiro, que po<strong>de</strong> ser configurada alterando o parâmetro GL FOG DENSITY:glFogf ( GL2 . GL_FOG_DENSITY ,0.5 f);Para GL LINEAR o valor da <strong>de</strong>nsida<strong>de</strong> não tem qualquer efeito, no entanto, para GL EXP e GL EXP2 este valoraltera o resultado final do nevoeiro.A Figura 6.7 mostra a forma como cada equação faz variar o nevoeiro entre o inicio e o fim para uma<strong>de</strong>nsida<strong>de</strong> <strong>de</strong> 0.5.Figura 6.7: Equações da Densida<strong>de</strong> do NevoeiroO modo como o OpenGL <strong>de</strong>termina a distância a profundida<strong>de</strong> do nevoeiro para cada elemento no cenáriopo<strong>de</strong> ser alterada utilizando o parâmetro GL FOG COORD SRC. Dois valores po<strong>de</strong>m ser utilizados:• GL FRAGMENT DEPTH: Utiliza a profundida<strong>de</strong> do objecto como valor da distância. Permite obter melhoresresultados.• GL FOG COORD (valor por omissão): Faz a interpolação do nevoeiro entre vértices, o que permite um cálculomais rápido.A alteração <strong>de</strong>ste parâmetro po<strong>de</strong> ser feita utilizando:glFogi ( GL2 . GL_FOG_COORD_SRC , GL2 . GL_FRAGMENT_DEPTH );// ouglFogi ( GL2 . GL_FOG_COORD_SRC , GL2 . GL_FOG_COORD );6.4 Accumulation BufferEm adição aos buffers <strong>de</strong> cor, profundida<strong>de</strong> e stencil 1 , o OpenGL contém um buffer especial que nos permitearmazenar os valores do buffer <strong>de</strong> cor em vez <strong>de</strong> os enviar para o ecrã. Um conjunto <strong>de</strong> operações permitemacumular várias iterações do buffer <strong>de</strong> cor, que po<strong>de</strong> então ser mostrado no ecrã.O comportamento do buffer <strong>de</strong> acumulação po<strong>de</strong> ser controlado pela função:glAccum ( int operation , float value );O primeiro argumento especifica a operação <strong>de</strong> acumulação a realizar e o segundo valor especifica um factor<strong>de</strong> escala para a operação. A operações possíveis estão enumeradas na Tabela ??.Devido à quantida<strong>de</strong> <strong>de</strong> operações <strong>de</strong> memória e processador necessários para realizar este tipo <strong>de</strong> operações,poucas aplicações em tempo-real utilizam este buffer. No entanto, os efeitos visuais conseguidos po<strong>de</strong>m ser <strong>de</strong>um realismo surpreen<strong>de</strong>nte. Por exemplo, é possível recriar vários tipos <strong>de</strong> blur que po<strong>de</strong>m simular os efeitos <strong>de</strong>profundida<strong>de</strong> encontrados nas câmaras <strong>de</strong> ví<strong>de</strong>o e fotográficas.O efeito na Figura 6.8 po<strong>de</strong> ser conseguido utilizando:1 A ser analisado futuramente65