ID3D11Device ::CreateGeometryShaderWithStreamOutput, méthode (d3d11.h)
Crée un nuanceur de géométrie qui peut écrire dans des mémoires tampons de sortie de streaming.
Syntaxe
HRESULT CreateGeometryShaderWithStreamOutput(
[in] const void *pShaderBytecode,
[in] SIZE_T BytecodeLength,
[in, optional] const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
[in] UINT NumEntries,
[in, optional] const UINT *pBufferStrides,
[in] UINT NumStrides,
[in] UINT RasterizedStream,
[in, optional] ID3D11ClassLinkage *pClassLinkage,
[out, optional] ID3D11GeometryShader **ppGeometryShader
);
Paramètres
[in] pShaderBytecode
Type : const void*
Pointeur vers le nuanceur de géométrie compilé pour un nuanceur de géométrie standard plus la sortie de flux. Pour plus d’informations sur l’obtention de ce pointeur, consultez Obtention d’un pointeur vers un nuanceur compilé.
Pour créer la sortie du flux sans utiliser de nuanceur de géométrie, passez un pointeur vers la signature de sortie de l’étape précédente. Pour obtenir cette signature de sortie, appelez la fonction de compilateur D3DGetOutputSignatureBlob . Vous pouvez également passer un pointeur vers le nuanceur compilé pour l’étape précédente (par exemple, l’étape vertex-shader ou l’étape domain-shader). Ce nuanceur compilé fournit la signature de sortie pour les données.
[in] BytecodeLength
Type : SIZE_T
Taille du nuanceur de géométrie compilé.
[in, optional] pSODeclaration
Type : const D3D11_SO_DECLARATION_ENTRY*
Pointeur vers un tableau D3D11_SO_DECLARATION_ENTRY . Ne peut pas être NULL si NumEntries > 0.
[in] NumEntries
Type : UINT
Nombre d’entrées dans la déclaration de sortie de flux ( compris entre 0 et D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ).
[in, optional] pBufferStrides
Type : const UINT*
Tableau de foulées de mémoire tampon ; chaque foulée correspond à la taille d’un élément pour cette mémoire tampon.
[in] NumStrides
Type : UINT
Nombre de foulées (ou mémoires tampons) dans pBufferStrides (compris entre 0 et D3D11_SO_BUFFER_SLOT_COUNT).
[in] RasterizedStream
Type : UINT
Numéro d’index du flux à envoyer à l’étape de rastériseur (compris entre 0 et D3D11_SO_STREAM_COUNT - 1). Définissez sur D3D11_SO_NO_RASTERIZED_STREAM si aucun flux ne doit être rastérisé.
[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 , représentant le nuanceur de géométrie qui a été créé. Définissez cette valeur sur NULL pour valider les autres paramètres ; Si la validation réussit, la méthode 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.
Remarques
Pour plus d’informations sur l’utilisation de CreateGeometryShaderWithStreamOutput, consultez Créer un objet Geometry-Shader avec Stream Output.
Le runtime Direct3D 11.1, disponible à partir de Windows 8, fournit les nouvelles fonctionnalités suivantes pour CreateGeometryShaderWithStreamOutput.
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 de géométrie, vous pouvez passer correctement le nuanceur de géométrie compilé à pShaderBytecode. Autrement dit, l’appel à CreateGeometryShaderWithStreamOutput 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), CreateGeometryShaderWithStreamOutput échoue. CreateGeometryShaderWithStreamOutput é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 atomiques immédiats (par exemple, atomic_and et imm_atomic_and)
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d11.h |
Bibliothèque | D3D11.lib |