Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Apêndice C<br />
Interface <strong>de</strong> programação<br />
Com base na arquitetura proposta no capítulo 5, e utilizando as técnicas <strong>de</strong> estimativa <strong>de</strong> pro-<br />
prieda<strong>de</strong>s <strong>de</strong> geometria diferencial na GPU apresentadas no capítulo 4, implementamos uma biblio-<br />
teca <strong>de</strong> funções <strong>de</strong> suporte a tarefas <strong>de</strong> manipulação direta <strong>3D</strong> em geometria modificada em hardware<br />
gráfico programável. A biblioteca encapsula todo o fluxo <strong>de</strong> processamento da arquitetura <strong>de</strong> intera-<br />
ção <strong>de</strong> forma transparente à aplicação, e po<strong>de</strong> ser utilizada para a prototipação rápida <strong>de</strong> ferramentas<br />
<strong>de</strong> manipulação direta em aplicações <strong>de</strong> interação <strong>3D</strong> que utilizem geometria modificada em tempo<br />
real no processador <strong>de</strong> vértices da GPU.<br />
A biblioteca é implementada em C++ e po<strong>de</strong> utilizar as APIs gráficas OpenGL e Direct<strong>3D</strong> <strong>de</strong><br />
acordo com a escolha da aplicação. As funções <strong>de</strong> suporte a tarefas <strong>de</strong> interação estão organizadas<br />
em duas classes C++:<br />
• Classe CIntManager: responsável pelo gerenciamento dos estados que afetam todos os mo-<br />
<strong>de</strong>los sobre os quais se <strong>de</strong>seja que os atributos sejam gerados para cada pixel. Em particular,<br />
cada instância da classe gerencia um conjunto <strong>de</strong> mo<strong>de</strong>los que geram o mesmo conjunto <strong>de</strong><br />
tipos <strong>de</strong> atributos.<br />
As funções <strong>de</strong> interação incluídas em CIntManager incluem as funções <strong>de</strong> configuração dos<br />
atributos geométricos ou não geométricos que serão calculados pela arquitetura, bem como as<br />
funções <strong>de</strong> mapeamento <strong>de</strong> semântica <strong>de</strong>sses atributos. A classe também inclui funções <strong>de</strong><br />
configuração da região <strong>de</strong> interesse do cálculo dos atributos, e a função que dispara o proces-<br />
samento dos atributos na GPU e codifica-os em buffers <strong>de</strong> ren<strong>de</strong>rização não visíveis. A função<br />
<strong>de</strong> <strong>de</strong>codificação dos atributos calculados também está incluída nesta classe.<br />
• Classe CIntObj: responsável pelo gerenciamento dos estados relacionados a um mo<strong>de</strong>lo es-<br />
pecífico utilizado na arquitetura. Cada instância <strong>de</strong>sta classe representa o estado <strong>de</strong> apenas um<br />
mo<strong>de</strong>lo da cena sobre o qual se <strong>de</strong>seja que os atributos sejam calculados.<br />
185