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.

5.4 Fluxo <strong>de</strong> processamento 117<br />

forem realizadas. Tal função <strong>de</strong>ve conter a chamada do comando <strong>de</strong> ren<strong>de</strong>rização das primitivas<br />

construídas com os buffers <strong>de</strong> vértices da geometria original in<strong>de</strong>xada.<br />

A função <strong>de</strong> chamada <strong>de</strong> retorno não <strong>de</strong>ve chamar nenhuma função <strong>de</strong> modificação do estado<br />

<strong>de</strong> ren<strong>de</strong>rização relacionado ao preenchimento das primitivas, como modificação do estado<br />

GL_POLYGON_MODE do OpenGL ou D<strong>3D</strong>FILLMODE do Direct<strong>3D</strong>, pois isso po<strong>de</strong> interferir<br />

na execução dos sha<strong>de</strong>rs internos chamados pela arquitetura. Também não é permitido modifi-<br />

car os sha<strong>de</strong>rs <strong>de</strong>ntro <strong>de</strong>sta função, mas é possível atribuir valores aos registradores constantes<br />

e texturas utilizadas pelo sha<strong>de</strong>r <strong>de</strong> modificação <strong>de</strong> atributos <strong>de</strong> vértices do estágio 1.<br />

Essa função <strong>de</strong> chamada <strong>de</strong> retorno po<strong>de</strong> ser informada à arquitetura através do comando<br />

SetUpdateCallback() que recebe como parâmetro o ponteiro da função.<br />

• Função <strong>de</strong> chamada <strong>de</strong> retorno a ser utilizada pela arquitetura quando os estágios 3, 4 e 5 forem<br />

executados. Assim como na função <strong>de</strong> chamada <strong>de</strong> retorno dos estágios 1 e 2, tal função <strong>de</strong>ve<br />

conter a chamada do comando <strong>de</strong> ren<strong>de</strong>rização das primitivas construídas com os buffers <strong>de</strong><br />

vértices da geometria original. Essas funções po<strong>de</strong>m modificar quaisquer estados <strong>de</strong> ren<strong>de</strong>riza-<br />

ção, com exceção da modificação dos sha<strong>de</strong>rs que estão sendo utilizados, pois isto é <strong>de</strong>finido<br />

internamente pela arquitetura.<br />

Duas funções <strong>de</strong> chamada <strong>de</strong> retorno po<strong>de</strong>m ser utilizadas: uma para ren<strong>de</strong>rizar geometria<br />

in<strong>de</strong>xada e outra para ren<strong>de</strong>rizar geometria não in<strong>de</strong>xada. Essas funções po<strong>de</strong>m ser informadas<br />

à arquitetura através <strong>de</strong> um comando SetRen<strong>de</strong>rCallback() que recebe como parâmetros<br />

os ponteiros das funções.<br />

A <strong>de</strong>finição das primitivas construídas com os atributos <strong>de</strong> vértices e a <strong>de</strong>cisão sobre o uso <strong>de</strong><br />

geometria in<strong>de</strong>xada são obtidas diretamente através do uso das funções <strong>de</strong> ren<strong>de</strong>rização da API nas<br />

funções <strong>de</strong> chamada <strong>de</strong> retorno. Outros dados <strong>de</strong> entrada utilizados na ren<strong>de</strong>rização dos atributos, tais<br />

como os registradores constantes contendo os parâmetros das funções <strong>de</strong> <strong>de</strong>formação, e conjuntos<br />

<strong>de</strong> texturas contendo dados para modificação dos atributos <strong>de</strong> fragmentos, têm seu uso <strong>de</strong>finido pela<br />

própria aplicação <strong>de</strong>ntro dos sha<strong>de</strong>rs <strong>de</strong> <strong>de</strong>formação <strong>de</strong> vértices ou fragmentos.<br />

5.4.3 Interface <strong>de</strong> saída (GPU-CPU)<br />

Após o estágio <strong>de</strong> modificação <strong>de</strong> atributos <strong>de</strong> fragmentos, os atributos <strong>de</strong> fragmentos são codifi-<br />

cados no formato <strong>de</strong> cor <strong>de</strong> um ou mais buffers <strong>de</strong> ren<strong>de</strong>rização não visíveis.<br />

A forma como os atributos serão codificados como cores po<strong>de</strong> ser modificada <strong>de</strong> acordo com a<br />

precisão numérica dos resultados requerida. Por exemplo, cada valor po<strong>de</strong> ser armazenado em uma<br />

componente <strong>de</strong> cor <strong>de</strong> 32 bits em formato <strong>de</strong> ponto flutuante. Assim, as três componentes <strong>de</strong> um vetor

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

Saved successfully!

Ooh no, something went wrong!