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

Create successful ePaper yourself

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

198 Interface <strong>de</strong> programação<br />

da função CIntManager::CreateObject(). Neste processo <strong>de</strong> ren<strong>de</strong>rização, o buffer<br />

<strong>de</strong> profundida<strong>de</strong> utilizado é o mesmo utilizado para a visualização. O teste <strong>de</strong> profundida<strong>de</strong><br />

é habilitado e o conteúdo <strong>de</strong>ste buffer é alterado para cada mo<strong>de</strong>lo ren<strong>de</strong>rizado. A tarefa <strong>de</strong><br />

limpar o conteúdo do buffer <strong>de</strong> profundida<strong>de</strong> é <strong>de</strong> responsabilida<strong>de</strong> da aplicação.<br />

C.1.3 Funções <strong>de</strong> interface <strong>de</strong> saída<br />

• Sintaxe: CIntManager::Deco<strong>de</strong>( float *pAttList[ATTTYPE_SIZE] ).<br />

Descrição: obtém os atributos armazenados nos buffers <strong>de</strong> ren<strong>de</strong>rização não visíveis após a<br />

execução <strong>de</strong> CIntManager::Ren<strong>de</strong>r().<br />

Parâmetros:<br />

– pAttList: conjunto <strong>de</strong> ATTTYPE_SIZE arranjos, on<strong>de</strong> ATTTYPE_SIZE é o número<br />

máximo <strong>de</strong> atributos que po<strong>de</strong>m ser obtidos pela arquitetura (atualmente esse valor é igual<br />

a 9). Somente os arranjos com índices ATTTYPE informados através <strong>de</strong> CIntManager<br />

::SetAttributes() serão válidos. Cada arranjo é um conjunto <strong>de</strong> valores numéricos<br />

em ponto flutuante, contendo os valores dos atributo <strong>de</strong> saída. O tamanho do arranjo é<br />

<strong>de</strong>finido pelo número <strong>de</strong> pixels da atual região <strong>de</strong> interesse, vezes o número <strong>de</strong> valores em<br />

ponto flutuante utilizado por cada pixel. Por exemplo, o atributo <strong>de</strong> valor <strong>de</strong> profundida<strong>de</strong><br />

requer, para cada pixel, apenas um valor em ponto flutuante. Assim, para uma região <strong>de</strong><br />

interesse <strong>de</strong> tamanho 5×5, o arranjo pAttList[ATTTYPE_DEPTH] terá 5×5×1 = 25<br />

valores. Em contrapartida, para o atributo <strong>de</strong> vetor normal, são necessários 3 três valores<br />

em ponto flutuante (um para cada componente da coor<strong>de</strong>nada) para cada pixel, <strong>de</strong> modo<br />

que pAttList[ATTTYPE_NORMAL] terá 5 × 5 × 3 = 75 valores.<br />

Comumente, funções tais como CIntManager::BindSemantics(),<br />

CIntManager::SetAttributes(), além <strong>de</strong> praticamente todas as funções <strong>de</strong> CIntObj, são<br />

chamadas apenas uma vez durante a inicialização da arquitetura e inicialização dos mo<strong>de</strong>los geométri-<br />

cos utilizados. O uso <strong>de</strong> tais funções durante o laço <strong>de</strong> ren<strong>de</strong>rização po<strong>de</strong> prejudicar o <strong>de</strong>sempenho<br />

da aplicação, pois elas envolvem tarefas potencialmente custosas, como criação e carregamento <strong>de</strong><br />

texturas, criação <strong>de</strong> sha<strong>de</strong>rs e <strong>de</strong>terminação da vizinhança <strong>de</strong> 1-anel dos mo<strong>de</strong>los. Por outro lado,<br />

funções como CIntManager::SetROI(), CIntObj::TogglePreVertexDeform(),<br />

CIntObj::TogglePostVertexDeform() e funções <strong>de</strong> obtenção <strong>de</strong> estados atuais po<strong>de</strong>m ser<br />

executadas para cada quadro <strong>de</strong> exibição, sem prejuízo no <strong>de</strong>sempenho. Por exemplo, a região <strong>de</strong><br />

interesse po<strong>de</strong> ser modificada <strong>de</strong> acordo com os eventos <strong>de</strong> movimentação do mouse, <strong>de</strong>vendo ser<br />

chamada durante o laço <strong>de</strong> ren<strong>de</strong>rização.

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

Saved successfully!

Ooh no, something went wrong!