13.07.2015 Views

Manual de Apoio 2010

Manual de Apoio 2010

Manual de Apoio 2010

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

As texturas carregadas não precisam <strong>de</strong> estar inicialmente comprimidas. Na altura do carregamento <strong>de</strong>staspo<strong>de</strong>mos solicitar a compressão ao OpenGL, alterando o internalFormat para um dos valores na Tabela 9.1.Formato ComprimidoGL COMPRESSED ALPHAGL COMPRESSED LUMINANCEGL COMPRESSED LUMINANCE ALPHAGL COMPRESSED INTENSITYGL COMPRESSED RGBGL COMPRESSED RGBAFormato BaseGL ALPHAGL LUMINANCEGL LUMINANCE ALPHAGL INTENSITYGL RGBGL RGBATabela 9.1: Formatos <strong>de</strong> Texturas ComprimidasAo utilizar os formatos <strong>de</strong> texturas comprimidos, é adicionado um ligeiro overhead no carregamento inicialdas texturas. No entanto, este overhead é <strong>de</strong>spresível face as melhorias na utilização da memória.Se por algum motivo a textura não for carregada com o formato comprimido solicitado, o OpenGL alternapara o formato base correspon<strong>de</strong>nte (Tabela 9.1).Quando utilizamos estes formatos para a compressão <strong>de</strong> texturas, o OpenGL tenta <strong>de</strong>terminar a melhor forma<strong>de</strong> comprimir a textura. Po<strong>de</strong>mos dizer ao OpenGL para escolher um algortimo mais rápido ou com melhorqualida<strong>de</strong> utilizando a função glHint:• Método mais rápido:gl. glHint ( GL2 . GL_TEXTURE_COMPRESSION_HINT , GL2 . GL_FASTEST );• Método com melhor qualida<strong>de</strong>:gl. glHint ( GL2 . GL_TEXTURE_COMPRESSION_HINT , GL2 . GL_NICEST );• Deixar o OpenGL <strong>de</strong>cidir:gl. glHint ( GL2 . GL_TEXTURE_COMPRESSION_HINT , GL2 . GL_DONT_CARE );9.4 Geração <strong>de</strong> Coor<strong>de</strong>nadas <strong>de</strong> TexturasComo vimos no capítulo anterior, a atribuição das coor<strong>de</strong>nadas das texturas a geometria é uma tarefa simplesquando estamos a lidar com superfícies simples (triângulos, quadrados, etc. . . ). No entanto, para superfíciescomplexas, o cálculo das coor<strong>de</strong>nadas correctas po<strong>de</strong> ser uma tarefa complexa.Até certo ponto, o OpenGL consegue gerar automáticamente estas coor<strong>de</strong>nadas das texturas para cada vértice.Para activar/<strong>de</strong>sactivar a geração das coor<strong>de</strong>nadas (s, r, t e q), utilizamos as funções glEnable()/glDisable()com as flags - GL TEXTURE GEN S, GL TEXTURE GEN R, GL TEXTURE GEN T e GL TEXTURE GEN Q.Quando a geração <strong>de</strong> coor<strong>de</strong>nadas está activa, quaisquer chamadas subsequentes às funções glTextCoord sãoignoradas.A função utilizada pelo o OpenGL para o cálculo <strong>de</strong>stas coor<strong>de</strong>nadas é <strong>de</strong>finida utilizando uma das funções:glTexGenf ( int coord , int pname , float param );glTexGenfv ( int coord , int pname , FloatBuffer param );O argumento coord po<strong>de</strong> tomar um dos valores - GL S, GL T, GL R ou GL Q. O argumento pname <strong>de</strong>verá serum <strong>de</strong> - GL TEXTURE GEN MODE, GL OBJECT PLANE ou GL EYE PLANE. O argumento param <strong>de</strong>fine os valores paraa função utilizada no argumento pname.Para exemplificar a utilização das funções <strong>de</strong> cálculo das coor<strong>de</strong>nadas foi criado o programa TexGen.java(ver Apêndice C.4). O programa permite ao utilizador alterar a função <strong>de</strong> cálculo em runtime, utilizando asteclas 1 = Object Linear, 2 = Eye Linear e 3 = Sphere Map.9.4.1 Oject Linear MappingQuando a função para a geração das texturas é GL OBJECT LINEAR, as coor<strong>de</strong>nadas das texturas são geradascom base na seguinte função:Coord OLM = P 1 × x + P 2 × y + P 3 × z + P 4 × w93

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

Saved successfully!

Ooh no, something went wrong!