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.

8.5.7 Level Of Detail (LOD) BiasO OpenGL calcula o nível <strong>de</strong> mip a utilizar com base no número <strong>de</strong> níveis disponíveis no tamanho da geometriaa ren<strong>de</strong>rizar. Po<strong>de</strong>mos, no entanto, dizer ao OpenGL para “polarizar” o valor do seu critério (valores <strong>de</strong> mipmais baixos) ou diminuir essa polarização (valores mais altos <strong>de</strong> mip). O ajuste <strong>de</strong>ste valor po<strong>de</strong>rá aumentar aperformance (utilizando os níveis mais baixos <strong>de</strong> mip) ou aumentar a fi<strong>de</strong>lida<strong>de</strong> das nossas texturas (utilizandoníveis mais altos <strong>de</strong> mip). O valor <strong>de</strong>sta polarização po<strong>de</strong> ser configurado utilizando, por exemplo:gl. glTexEnvf ( GL2 . GL_TEXTURE_FILTER_CONTROL , GL2 . GL_TEXTURE_LOD_BIAS , -1.5);No exemplo em cima, o <strong>de</strong>talhe das texturas é aumentado ligeiramente (nível <strong>de</strong> mip mais baixo), resultandonum cenário com aspecto melhorado, ainda que à custa <strong>de</strong> processamento adicional.8.6 Texture ObjectsO carregamento e gestão das texturas representam uma porção importante no <strong>de</strong>senvolvimento <strong>de</strong> qualqueraplicação 3D, tal como os jogos, em particular.As funções glTexImage, glTexSubImage e gluBuildMipmaps, movem gran<strong>de</strong>s quantida<strong>de</strong>s <strong>de</strong> memória, peloque a troca entre texturas seria uma operação dispoendiosa, em termos <strong>de</strong> processamento.Os texture objects permitem-nos carregar mais do que um estado <strong>de</strong> textura <strong>de</strong> cada vez e trocar entre elas<strong>de</strong> forma rápida. O estado das texturas é armazenado e rotulado com um i<strong>de</strong>ntificador inteiro. A alocação <strong>de</strong>texturas com i<strong>de</strong>ntificadores é feita utilizando:glGenTextures ( int n, IntBuffer textures );O argumento n especifica o número <strong>de</strong> texturas que queremos armazenar e o argumento textures é umarray <strong>de</strong> inteiros (IntBuffer) que irá conter os i<strong>de</strong>ntificadores gerados. Para fazer o bind <strong>de</strong> uma textura a um<strong>de</strong>stes estados fazemos:glBindTexture ( int target , int texture );Mais uma vez o target po<strong>de</strong> tomar o valor GL TEXTURE 1D, GL TEXTURE 2D ou GL TEXTURE 3D. O argumentotexture é o i<strong>de</strong>ntificador ao qual vamos fazer o bind. O carregamentos <strong>de</strong> texturas e parametrizações subsequentesafectaram apenas o estado da textura representado pelo i<strong>de</strong>ntificador texture.Para apagar um <strong>de</strong>terminado estado utilizamos a função:glDeleteTextures ( int n, IntBuffer textures );O significado dos argumentos é o mesmo da função glBindTexture.Po<strong>de</strong>mos verificar se um <strong>de</strong>terminado i<strong>de</strong>ntificador contém um estado válido utilizando a função:boolean glIsTexture ( int texture );O valor <strong>de</strong> retorno da função será GL TRUE no caso <strong>de</strong> ter sido alocado um estado a este i<strong>de</strong>ntificador.89

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

Saved successfully!

Ooh no, something went wrong!