11.07.2015 Views

OpenGL Avançado

OpenGL Avançado

OpenGL Avançado

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

maior será a quantidade de pixels a serem desenhados. Outro modo de testar é desabilitandooperações de textura, fog, blending.Existem várias estratégias para se otimizar os estágios do pipeline. Algumas abordagens comprometem aqualidade em troca de desempenho e outras são apenas melhores estratégias de implementação:Otimização do Estágio da Aplicação: otimizações para tornar o código e acesso à memória maisrápidos. Isso pode ser obtido ativando-se flags de compilação e conhecendo detalhes das linguagensde programação. Algumas dicas gerais de código/memória são listadas. Para maiores detalhesconsulte [2]:o Evite divisões;o Evite chamar funções com pouco código. Use funções inline;o Reduzir uso de funções trigonométricas;o Usar float ao invés de double;o Usar const sempre que possível, para o compilador melhor otimizar o código;o Evitar uso excessivo de funções malloc/free.Otimização do Estágio de geometria: Pode-se aplicar otimizações apenas sobre transformações eiluminação.o Em relação a transformações, se o objeto precisar ser movido para uma posição estática, aoinvés de aplicar a transformação a cada renderização, pode-se aplicar as transformações emum pré-processamento antes da renderização iniciar;o Outra estratégia é reduzir ao máximo o número de vértices, com o uso de vertex array, ouprimitivas do tipo STRIP ou FAN;o Outra estratégia muito eficiente é aplicar culling, no estágio da aplicação;o Uso de LOD;o Reduzir o número de fontes luminosas;o Verificar quais partes da cena necessitam iluminação;o Iluminação flat é mais rápida que Gourdaud;o Avaliar se é necessário iluminar os dois lados das superfícies;o Uso de Light maps.Otimização do Estágio de Rasterização:o Habilitar backface culling para objetos fechados. Isso reduz o número de triângulos paraserem rasterizados em aproximadamente 50%;o Desenhar objetos mais próximos do observador primeiro. Isso evita gravações sucessivas noz-buffer;o Desabilitar recursos como fog, blending ou uso de filtros de textura mais baratos, como obilinear ao invés de mipmapping.Otimizações gerais:o Reduzir a geometria da cena;o Reduza a precisão em vértices, normais, cores e coordeandas de textura. Isso reduz uso dememória e uso de barramento;o Desabilitar recursos não utilizados;o Minimizar mudança de estados;o Evitar swap de texturas;o Use display lists para objetos estáticos.7.2. Avaliando o Desempenho do PipelineA velocidade de renderização depende do estágio mais lento, e é medida em FPS (frames por segundo). Paraeste cálculo, deve-se desabilitar o recurso de double-buffer, visto que a troca de buffer neste caso ocorre emsincronismo com o refresh do monitor.2

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

Saved successfully!

Ooh no, something went wrong!