Método ID3D12Device8::CreateCommittedResource2 (d3d12.h)
Cria um recurso e um heap implícito (opcionalmente para uma sessão protegida), de modo que o heap é grande o suficiente para conter todo o recurso e o recurso é mapeado para o heap. Consulte também ID3D12Device::CreateCommittedResource para obter um exemplo de código.
Sintaxe
HRESULT CreateCommittedResource2(
const D3D12_HEAP_PROPERTIES *pHeapProperties,
D3D12_HEAP_FLAGS HeapFlags,
const D3D12_RESOURCE_DESC1 *pDesc,
D3D12_RESOURCE_STATES InitialResourceState,
const D3D12_CLEAR_VALUE *pOptimizedClearValue,
ID3D12ProtectedResourceSession *pProtectedSession,
REFIID riidResource,
void **ppvResource
);
Parâmetros
pHeapProperties
Tipo: _In_ const D3D12_HEAP_PROPERTIES*
Um ponteiro para uma estrutura D3D12_HEAP_PROPERTIES que fornece propriedades para o heap do recurso.
HeapFlags
Tipo: D3D12_HEAP_FLAGS
Opções de heap, como uma combinação or'd bit a bit de D3D12_HEAP_FLAGS constantes de enumeração.
pDesc
Tipo: const D3D12_RESOURCE_DESC1*
Um ponteiro para uma estrutura D3D12_RESOURCE_DESC1 que descreve o recurso, incluindo uma região mip.
InitialResourceState
Tipo: D3D12_RESOURCE_STATES
O estado inicial do recurso, como uma combinação or'd bit a bit de D3D12_RESOURCE_STATES constantes de enumeração.
Ao criar um recurso junto com um heap de D3D12_HEAP_TYPE_UPLOAD , você deve definir InitialResourceState como D3D12_RESOURCE_STATE_GENERIC_READ.
Ao criar um recurso junto com um heap de D3D12_HEAP_TYPE_READBACK , você deve definir InitialResourceState como D3D12_RESOURCE_STATE_COPY_DEST.
pOptimizedClearValue
Tipo: const D3D12_CLEAR_VALUE*
Especifica uma estrutura D3D12_CLEAR_VALUE que descreve o valor padrão para uma cor clara.
pOptimizedClearValue especifica um valor para o qual as operações claras são mais ideais. Quando o recurso criado é uma textura com os sinalizadores D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL , você deve escolher o valor com o qual a operação clara será mais comumente chamada. Você pode chamar a operação clara com outros valores, mas essas operações não serão tão eficientes quanto quando o valor corresponder ao passado para a criação de recursos.
Ao usar D3D12_RESOURCE_DIMENSION_BUFFER, você deve definir pOptimizedClearValue como nullptr
.
pProtectedSession
Tipo: ID3D12ProtectedResourceSession*
Um ponteiro opcional para um objeto que representa uma sessão para proteção de conteúdo. Se fornecido, esta sessão indica que o recurso deve ser protegido. Você pode obter um ID3D12ProtectedResourceSession chamando ID3D12Device4::CreateProtectedResourceSession.
riidResource
Tipo: REFIID
Uma referência ao GUID (identificador global exclusivo) da interface de recurso a ser retornada em ppvResource.
Embora riidResource seja mais comumente o GUID de ID3D12Resource, ele pode ser o GUID de qualquer interface. Se o objeto de recurso não der suporte à interface para esse GUID, a criação falhará com E_NOINTERFACE.
ppvResource
Tipo: void**
Um ponteiro opcional para um bloco de memória que recebe o ponteiro de interface solicitado para o objeto de recurso criado.
ppvResource pode ser nullptr
, para habilitar o teste de funcionalidade. Quando ppvResource é nullptr
, nenhum objeto é criado e S_FALSE é retornado quando pDesc é válido.
Retornar valor
Tipo: HRESULT
Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erroHRESULT.
Valor retornado | Descrição |
---|---|
E_OUTOFMEMORY | Não há memória suficiente para criar o recurso. |
Confira Códigos de retorno do Direct3D 12 para obter outros valores de retorno possíveis.
Comentários
Esse método cria um recurso e um heap, de modo que o heap é grande o suficiente para conter todo o recurso e o recurso é mapeado para o heap. O heap criado é conhecido como um heap implícito, pois o objeto heap não pode ser obtido pelo aplicativo. Antes de liberar a referência final no recurso, seu aplicativo deve garantir que a GPU não lerá nem gravará mais nesse recurso.
O heap implícito é feito residente para acesso à GPU antes que o método retorne o controle ao seu aplicativo. Confira também Residência.
O mapeamento de VA de GPU do recurso não pode ser alterado. Consulte ID3D12CommandQueue::UpdateTileMappings e Recursos em bloco de volume.
Esse método pode ser chamado por vários threads simultaneamente.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 Build 20348 |
Servidor mínimo com suporte | Windows 10 Build 20348 |
Cabeçalho | d3d12.h |
Biblioteca | d3d12.lib |
DLL | d3d12.dll |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de