ID3D11Device::CreateGeometryShader, méthode (d3d11.h)
Créez un nuanceur de géométrie.
Syntaxe
HRESULT CreateGeometryShader(
[in] const void *pShaderBytecode,
[in] SIZE_T BytecodeLength,
[in, optional] ID3D11ClassLinkage *pClassLinkage,
[out, optional] ID3D11GeometryShader **ppGeometryShader
);
Paramètres
[in] pShaderBytecode
Type : const void*
Pointeur vers le nuanceur compilé.
[in] BytecodeLength
Type : SIZE_T
Taille du nuanceur de géométrie compilé.
[in, optional] pClassLinkage
Type : ID3D11ClassLinkage*
Pointeur vers une interface de liaison de classes (voir ID3D11ClassLinkage) ; la valeur peut être NULL.
[out, optional] ppGeometryShader
Type : ID3D11GeometryShader**
Adresse d’un pointeur vers une interface ID3D11GeometryShader . Si cette valeur est NULL, tous les autres paramètres sont validés et, si tous les paramètres réussissent la validation, cette API retourne S_FALSE au lieu de S_OK.
Valeur retournée
Type : HRESULT
Cette méthode retourne l’un des codes de retour Direct3D 11 suivants.
Remarques
Une fois créé, le nuanceur peut être défini sur l’appareil en appelant ID3D11DeviceContext::GSSetShader.
Le runtime Direct3D 11.1, disponible à partir de Windows 8, fournit les nouvelles fonctionnalités suivantes pour CreateGeometryShader.
Les instructions suivantes du modèle de nuanceur 5.0 sont disponibles uniquement pour les nuanceurs de pixels et les nuanceurs de calcul dans le runtime Direct3D 11.0. Pour le runtime Direct3D 11.1, étant donné que les vues d’accès non ordonnées (UAV) sont disponibles à toutes les étapes du nuanceur, vous pouvez utiliser ces instructions dans toutes les étapes du nuanceur.
Par conséquent, si vous utilisez les instructions suivantes du modèle de nuanceur 5.0 dans un nuanceur geometry, vous pouvez passer le nuanceur de géométrie compilé à pShaderBytecode. Autrement dit, l’appel à CreateGeometryShader réussit.
Si vous passez un nuanceur compilé à pShaderBytecode qui utilise l’une des instructions suivantes sur un appareil qui ne prend pas en charge les UAV à chaque étape du nuanceur (y compris les pilotes existants qui ne sont pas implémentés pour prendre en charge les UAV à chaque étape du nuanceur), CreateGeometryShader échoue. CreateGeometryShader échoue également si le nuanceur tente d’utiliser un emplacement UAV au-delà de l’ensemble d’emplacements UAV pris en charge par le matériel.
- dcl_uav_typed
- dcl_uav_raw
- dcl_uav_structured
- ld_raw
- ld_structured
- ld_uav_typed
- store_raw
- store_structured
- store_uav_typed
- sync_uglobal
- Tous les atomes et les atomes immédiats (par exemple, atomic_and et imm_atomic_and)
Exemples
Exemple d'utilisation
ID3D11GeometryShader* g_pGeometryShader11 = NULL;
ID3DBlob* pGeometryShaderBuffer = NULL;
ID3DBlob * errorbuffer = NULL;
D3DX11CompileFromFile( str, NULL, NULL, "GS", "gs_4_0", dwShaderFlags, 0, NULL,
&pGeometryShaderBuffer, &errorbuffer, NULL );
pd3dDevice->CreateGeometryShader( pGeometryShaderBuffer->GetBufferPointer(),
pGeometryShaderBuffer->GetBufferSize(), NULL, &g_pGeometryShader11 );
Configuration requise
Plateforme cible | Windows |
En-tête | d3d11.h |
Bibliothèque | D3D11.lib |