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.
gl. glDisable ( GL2 . GL_BLEND );gl. glEnable ( GL2 . GL_LIGHTING );// Desenhar a luz no local correctogl. glLightfv ( GL2 . GL_LIGHT0 , GL2 . GL_POSITION , fLightPos . toArray () , 0);// Desenhar um Torus Ver<strong>de</strong>gl. glColor4f (0 , 1f, 0, .5f);drawWorld (gl );gl. glPopMatrix ();O código acima <strong>de</strong>senha inicialmente o torus <strong>de</strong>baixo do chão com a geometria invertida sobre o eixo-y(glScalef(0, -1f, 0)). Porque a geometria está invertida é preciso re<strong>de</strong>finir a forma como é <strong>de</strong>terinhada aface dos polígonos, utilizando glFrontFace(GL CW). Da mesma forma o nosso ponto <strong>de</strong> luz tem que ser colocadona posição inversa, <strong>de</strong> forma a manter a iluminação dos objectos coerentes. Seguidamente activamos o blendinge <strong>de</strong>senhamos o nosso chão com um alpha <strong>de</strong> .5f. Finalmente repomos a posição da luz e <strong>de</strong>senhamos o toruscom a geometria em posição. O resultado obtido é o da Figura 6.3.Figura 6.3: Ilusão <strong>de</strong> Reflexão utilizando Blending6.1.2 Alteração da Equação <strong>de</strong> BlendingA equação mostrada anteriormente:C f = (C S ∗ S) + (C D ∗ D)é a queação por omissão. Po<strong>de</strong>mos, no entanto, escolher <strong>de</strong> entre um conjunto <strong>de</strong> equações possíveis para a<strong>de</strong>terminação do blending, utilizando o seguinte código:glBlendEquation ( int equation );As equações possíveis para a <strong>de</strong>terminação do blending são as <strong>de</strong>scritas na Tabela 6.2.Mo<strong>de</strong>FunctionGL FUNC ADD (<strong>de</strong>fault) C f = (C S × S) + (C D × D)GL FUNC SUBTRACT C f = (C S × S) − (C D × D)GL FUNC REVERSE SUBTRACT C f = (C S × D) − (C D × S)GL MIN C f = min(C S , C D )GL MAX C f = max(C S , C D )Tabela 6.2: Factores <strong>de</strong> Blending do OpenGL61