Vorgehensweise: Initialisieren der Tessellatorphase
Im Allgemeinen erweitert tessellation das kompakte, benutzerdefinierte Modell eines Patches in geometrie, die eine programmierbare Menge an Details enthält. Die Geometrie besteht in der Regel aus einer Reihe von Dreiecken, die detaillierte Oberflächengeometrie darstellen. In diesem Thema wird gezeigt, wie Sie die Tessellatorphase initialisieren.
Die Tessellator-Phase ist die zweite von drei Phasen, die zusammenarbeiten, um eine Oberfläche zu tesselieren oder zu kacheln. Die erste Stufe ist die Rumpf-Shader-Stufe; es wird einmal pro Patch ausgeführt und konfiguriert, wie sich die nächste Phase (der feste Funktionstesellator) verhält. Ein Hull-Shader generiert auch benutzerdefinierte Ausgaben wie Ausgabesteuerungspunkte und Patchkonstanten, die direkt über den Tessellator an die dritte Stufe, die Domain-Shader-Phase, gesendet werden. Ein Domänenshader wird einmal pro Tessellator-Phasenpunkt aufgerufen und wertet Oberflächenpositionen aus.
Die Tessellatorphase ist eine feste Funktionsstufe, es gibt keinen Shader, der generiert werden soll, und es muss kein Zustand festgelegt werden. Er erhält seinen gesamten Setupzustand von der Hull-Shader-Stufe; Nachdem die Hull-Shader-Phase initialisiert wurde, wird die Tessellatorphase automatisch initialisiert.
So initialisieren Sie die Tessellatorphase
Initialisieren Sie die Hull-Shader-Phase mithilfe von ID3D11DeviceContext::HSSetShader.
void HSSetShader( ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
ppClassInstances ist ein Zeiger auf ein Array von Shaderschnittstellen, dargestellt durch ID3D11ClassInstance-Zeiger und die Anzahl von Schnittstellen, dargestellt durch NumClassInstances. Wenn sie nicht verwendet werden, können diese Parameter auf NULL bzw. 0 festgelegt werden.
Nachdem die Hull-Shader-Phase initialisiert wurde, sollten Sie auch die Domain-Shader-Phase initialisieren.
Zugehörige Themen