03.04.2013 Views

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

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.

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

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

Saved successfully!

Ooh no, something went wrong!