Compartilhar via


Buffers de vértice (Direct3D 9)

Os buffers de vértice, representados pela interface deIDirect3DVertexBuffer9, são buffers de memória que contêm dados de vértice. Os buffers de vértice podem conter qualquer tipo de vértice – transformado ou não transformado, iluminado ou não iluminado – que possa ser renderizado por meio do uso dos métodos de renderização na interfaceIDirect3DDevice9 do. Você pode processar os vértices em um buffer de vértice para executar operações como transformação, iluminação ou geração de sinalizadores de recorte. A transformação é sempre executada.

A flexibilidade dos buffers de vértice os torna os pontos de preparo ideais para reutilizar a geometria transformada. Você pode criar um único buffer de vértice, transformar, acender e recortar os vértices nele e renderizar o modelo na cena quantas vezes forem necessárias sem transformá-lo novamente, mesmo com alterações de estado de renderização intercaladas. Isso é útil ao renderizar modelos que usam várias texturas: a geometria é transformada apenas uma vez e, em seguida, partes dela podem ser renderizadas conforme necessário, intercaladas com as alterações de textura necessárias. As alterações de estado de renderização feitas após o processamento dos vértices entrarão em vigor na próxima vez que os vértices forem processados.

  • descrição
  • pool de memória e de uso

Descrição

Um buffer de vértice é descrito em termos de seus recursos: se ele puder existir apenas na memória do sistema, se ele for usado apenas para operações de gravação e o tipo e o número de vértices que ele pode conter. Todas essas características são mantidas em uma estrutura D3DVERTEXBUFFER_DESC.

O membro Format é definido como D3DFMT_VERTEXDATA para indicar que esse é um buffer de vértice. O Tipo identifica o tipo de recurso do buffer de vértice. O membro da estrutura uso contém sinalizadores de funcionalidade gerais. O sinalizador D3DUSAGE_SOFTWAREPROCESSING indica que o buffer de vértice deve ser usado com o processamento de vértice de software. A presença do sinalizador D3DUSAGE_WRITEONLY em Uso indica que a memória do buffer de vértice é usada apenas para operações de gravação. Isso libera o driver para colocar os dados de vértice no melhor local de memória para habilitar o processamento e a renderização rápidos. Se o sinalizador de D3DUSAGE_WRITEONLY não for usado, o driver terá menos probabilidade de colocar os dados em um local ineficiente para operações de leitura. Isso sacrifica alguma velocidade de processamento e renderização. Se esse sinalizador não for especificado, supõe-se que os aplicativos executem operações de leitura e gravação nos dados dentro do buffer de vértice.

O pool especifica a classe de memória alocada para o buffer de vértice. O sinalizador D3DPOOL_SYSTEMMEM indica que o sistema criou o buffer de vértice na memória do sistema.

O membro Size armazena o tamanho, em bytes, dos dados do buffer de vértice. O membro FVF contém uma combinação de D3DFVF que identificam o tipo de vértices que o buffer contém.

Pool de Memória e Uso

Você pode criar buffers de vértice com o método IDirect3DDevice9::CreateVertexBuffer, que usa pool (classe de memória) e parâmetros de uso. IDirect3DDevice9::CreateVertexBuffer também pode ser criado com um código FVF especificado para uso no processamento de vértice de função fixa ou como saída de vértices de processo. Para obter detalhes, consulte buffers de vértice FVF (Direct3D 9).

O sinalizador D3DUSAGE_SOFTWAREPROCESSING pode ser definido quando o processamento de vértice de software ou modo misto (D3DCREATE_MIXED_VERTEXPROCESSING/D3DCREATE_SOFTWARE_VERTEXPROCESSING) está habilitado para esse dispositivo. D3DUSAGE_SOFTWAREPROCESSING deve ser definido para que os buffers sejam usados com o processamento de vértice de software no modo misto, mas ele não deve ser definido para o melhor desempenho possível ao usar o processamento de vértice de hardware no modo misto. (D3DCREATE_HARDWARE_VERTEXPROCESSING). No entanto, definir D3DUSAGE_SOFTWAREPROCESSING é a única opção quando um único buffer deve ser usado com processamento de vértice de hardware e software. D3DUSAGE_SOFTWAREPROCESSING é permitido para dispositivos de software mistos e para dispositivos de software.

É possível forçar buffers de vértice e índice na memória do sistema especificando D3DPOOL_SYSTEMMEM, mesmo quando o processamento de vértice é feito no hardware. Essa é uma maneira de evitar grandes quantidades de memória bloqueada por página quando um driver está colocando esses buffers na memória do AGP.

Esta seção apresenta os conceitos necessários para entender e usar buffers de vértice em um aplicativo Direct3D. As informações são divididas nas seções a seguir.

de recursos do Direct3D

renderização de buffers de vértice e índice (Direct3D 9)

buffers de índice (Direct3D 9)