13.07.2015 Views

Manual de Apoio 2010

Manual de Apoio 2010

Manual de Apoio 2010

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

7.4 Outras Operações com ImagensPara além das operações <strong>de</strong>scritas, o OpenGL suporta ainda um conjunto <strong>de</strong> operações especiais aquando datransferência da informação dos pixels para e do color buffer.Abaixo discutimos algumas das operações possíveis, bem como o código necessário para consegui-las (códigocompleto no Apêndice C.2). O progama inicial para a <strong>de</strong>monstração <strong>de</strong>sta funcionalida<strong>de</strong> utiliza uma projecçãoortogonal configurada com a função:glOrtho2D (double left , double right ,double bottom , double top);Em que left/right são as coor<strong>de</strong>nadas dos clipping planes verticais, e bottom/top são as coor<strong>de</strong>nadasdos clipping planes horizontais. Os valores <strong>de</strong> zNear/zFar especificados na função glOrtho tomam os valores0 e 1 respectivamente.A nossa projecção ortogonal irá coincidir com o tamanho da janela e do viewport. O método reshape(...)terá o seguinte aspecto:public void reshape ( GLAutoDrawable drawable , int x, int y, int width , int height ) {// Viewport coinci<strong>de</strong> com a janelagl. glViewport (0 , 0, width , height );gl. glMatrixMo<strong>de</strong> ( GL2 . GL_PROJECTION );gl. glLoadI<strong>de</strong>ntity ();// Configurar a projeccao ortogonalglu . gluOrtho2D (0 , width , 0, height );}// ...À semelhança do que aconteceu com o exemplo na secção anterior, será carregado o ficheiro horse.tga comrecurso ao ClassLoa<strong>de</strong>r do Java e à função TGAImage.read(...) para a variável <strong>de</strong> classe img e lidos os bytespara um ByteBuffer (bb).A imagem (Figura 7.5) será mostrada no método display(...) utilizando:gl. glDrawPixels (img . getWidth () , img . getHeight () ,img . getGLFormat () ,GL2 . GL_UNSIGNED_BYTE , bb );Figura 7.5: Imaging.java mostranto horse.tgaOs blocos <strong>de</strong> código seguinte mostram como po<strong>de</strong>mos implementar os efetios GaussianBlur, Sharpen, Emboss,Invert e Brighten. Alguns dos efeitos são aplicados utilizando matrizes <strong>de</strong> convolução, que permitem obter ovalor <strong>de</strong> cor <strong>de</strong> um pixel com base nos que se encontram nas suas imediações 1 .O OpenGL permite aplicar este tipo <strong>de</strong> matrizes às imagens utilizando a função:1 Mais <strong>de</strong>talhes e exemplos em http://manual.gimp.org/en/plug-in-convmatrix.html74

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!