Camadas de software

O runtime do Direct3D 11 é construído com camadas, começando com a funcionalidade básica no núcleo e criando funcionalidades opcionais e de assistência para desenvolvedores em camadas externas. Esta seção descreve a funcionalidade de cada camada.

Como regra geral, as camadas adicionam funcionalidade, mas não modificam o comportamento existente. Por exemplo, as funções principais terão os mesmos valores retornados independentemente da camada de depuração ser instanciada, embora a saída de depuração adicional possa ser fornecida se a camada de depuração for instanciada.

Para criar camadas quando um dispositivo for criado, chame D3D11CreateDevice ou D3D11CreateDeviceAndSwapChain e forneça um ou mais valores D3D11_CREATE_DEVICE_FLAG .

O Direct3D 11 fornece as seguintes camadas de runtime:

Camada Principal

A camada principal existe por padrão; fornecendo um mapeamento muito fino entre a API e o driver do dispositivo, minimizando a sobrecarga para chamadas de alta frequência. Como a camada principal é essencial para o desempenho, ela executa apenas a validação crítica. As camadas restantes são opcionais.

Camada de depuração

A camada de depuração fornece amplo parâmetro adicional e validação de consistência (como validar a vinculação do sombreador e a associação de recursos, validar a consistência do parâmetro e relatar descrições de erro).

Para criar um dispositivo que dê suporte à camada de depuração, instale o SDK do DirectX (para obter D3D11SDKLayers.dll) e especifique o sinalizador D3D11_CREATE_DEVICE_DEBUG ao chamar a função D3D11CreateDevice ou a função D3D11CreateDeviceAndSwapChain . Se você executar seu aplicativo com a camada de depuração habilitada, o aplicativo será substancialmente mais lento. Porém, para garantir que seu aplicativo seja limpo de erros e avisos antes de for enviado, use a camada de depuração. Para obter mais informações, consulte Usando a camada de depuração para depurar aplicativos.

Observação

Para o Windows 7 com Atualização de Plataforma para Windows 7 (KB2670838) ou Windows 8.x, para criar um dispositivo que dê suporte à camada de depuração, instale o SDK (Software Development Kit) do Windows para Windows 8.x para obter D3D11_1SDKLayers.dll.

Observação

Para Windows 10, para criar um dispositivo que dê suporte à camada de depuração, habilite o recurso opcional "Ferramentas Gráficas". Vá para o painel Configurações, em Recursos do Sistema, Aplicativos & , Gerenciar Recursos opcionais, Adicionar um recurso e procure "Ferramentas Gráficas".

Observação

Para obter informações sobre como depurar aplicativos DirectX remotamente, consulte Depurando aplicativos DirectX remotamente.

 

Como alternativa, você pode habilitar/desabilitar o sinalizador de depuração usando o Painel de Controle DirectX incluído como parte do SDK do DirectX.

Quando a camada de depuração lista vazamentos de memória, ela gera uma lista de ponteiros de interface de objeto junto com seus nomes amigáveis. O nome amigável padrão é "<sem nome>". Você pode definir o nome amigável usando o método ID3D11DeviceChild::SetPrivateData e o GUID WKPDID_D3DDebugObjectName que está em D3Dcommon.h. Por exemplo, para nomear pTexture com um nome SDKLayer de mytexture.jpg, use o seguinte código:

const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );

Normalmente, você deve compilar essas chamadas de sua versão de produção.

Dispositivos