Partilhar via


Método ID3D11Device::CreateBuffer (d3d11.h)

Cria um buffer (buffer de vértice, buffer de índice ou buffer de constante de sombreador).

Sintaxe

HRESULT CreateBuffer(
  [in]            const D3D11_BUFFER_DESC      *pDesc,
  [in, optional]  const D3D11_SUBRESOURCE_DATA *pInitialData,
  [out, optional] ID3D11Buffer                 **ppBuffer
);

Parâmetros

[in] pDesc

Tipo: const D3D11_BUFFER_DESC*

Um ponteiro para uma estrutura de D3D11_BUFFER_DESC que descreve o buffer.

[in, optional] pInitialData

Tipo: const D3D11_SUBRESOURCE_DATA*

Um ponteiro para uma estrutura D3D11_SUBRESOURCE_DATA que descreve os dados de inicialização; use NULL apenas para alocar espaço (com a exceção de que ele não pode ser NULL se o sinalizador de uso for D3D11_USAGE_IMMUTABLE).

Se você não passar nada para pInitialData, o conteúdo inicial da memória do buffer será indefinido. Nesse caso, você precisa gravar o conteúdo do buffer de outra maneira antes que o recurso seja lido.

[out, optional] ppBuffer

Tipo: ID3D11Buffer**

Endereço de um ponteiro para a interface ID3D11Buffer para o objeto buffer criado. Defina esse parâmetro como NULL para validar os outros parâmetros de entrada (S_FALSE indica uma passagem).

Valor retornado

Tipo: HRESULT

Esse método retornará E_OUTOFMEMORY se não houver memória suficiente para criar o buffer. Consulte Códigos de retorno do Direct3D 11 para obter outros valores de retorno possíveis.

Comentários

Por exemplo, confira Como criar um buffer de vértice, Como criar um buffer de índice ou Como criar um buffer constante.

Para um buffer constante (BindFlags de D3D11_BUFFER_DESC definido como D3D11_BIND_CONSTANT_BUFFER), você deve definir o valor ByteWidth de D3D11_BUFFER_DESC em múltiplos de 16 e menor ou igual a D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.

O runtime do Direct3D 11.1, que está disponível no Windows 8 e em sistemas operacionais posteriores, fornece a seguinte nova funcionalidade para CreateBuffer:

Você pode criar um buffer constante maior que o tamanho máximo do buffer constante que um sombreador pode acessar (constantes de 42 bits*4 componentes de 4 bits de 4 bits – 64 KB). Ao associar o buffer constante ao pipeline (por exemplo, via PSSetConstantBuffers ou PSSetConstantBuffers1), você pode definir um intervalo do buffer que o sombreador pode acessar que se ajusta ao limite constante 4096.

O runtime do Direct3D 11.1 (disponível no Windows 8 e em sistemas operacionais posteriores) emula esse recurso para o nível de recurso 9.1, 9.2 e 9.3; portanto, esse recurso tem suporte para o nível de recurso 9.1, 9.2 e 9.3.

Esse recurso está sempre disponível em novos drivers para o nível de recurso 10 e superior.

Em runtimes mais antigos que o Direct3D 11.1, uma chamada para CreateBuffer para solicitar um buffer constante maior que 4096 falha.

Requisitos

   
Plataforma de Destino Windows
Cabeçalho d3d11.h
Biblioteca D3D11.lib

Confira também

ID3D11Device