Vorgehensweise: Erstellen eines Hüllen-Shaders
Ein Hüllen-Shader ist die erste von drei Phasen, die zusammenarbeiten, um Mosaikzu implementieren. Die Ausgaben des Hüllen-Shaders steuern die Mosaikstufe sowie die Domänen-Shader-Stufe. In diesem Thema wird gezeigt, wie Sie einen Hüllen-Shader erstellen.
Ein Hüllen-Shader wandelt einen Satz von Eingabesteuerpunkten (von einem Scheitelpunkt-Shader) in eine Reihe von Ausgabekontrollpunkten um. Die Anzahl der Eingabe- und Ausgabepunkte kann je nach Transformation in Inhalt und Anzahl variieren (eine typische Transformation wäre eine Basistransformation).
Ein Hüllen-Shader gibt auch Patchkonstanteninformationen wie Mosaikfaktoren für einen Domänen-Shader und den Mosaikator aus. Die Tessellatorphase mit fester Funktion verwendet die Mosaikfaktoren sowie einen anderen Zustand, der in einem Hüllen-Shader deklariert ist, um zu bestimmen, wie viel mosaikiert werden soll.
So erstellen Sie einen Hüllen-Shader
Entwerfen sie einen Hüllen-Shader. Weitere Informationen finden Sie unter Vorgehensweise: Entwerfen eines Hüllen-Shaders.
Kompilieren des Shadercodes
Erstellen Sie mit id3D11Device::CreateHullShaderein Shaderobjekt.
HRESULT CreateHullShader( const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11HullShader **ppHullShader );Initialisieren Sie die Pipelinephase mit ID3D11DeviceContext::HSSetShader.
void HSSetShader( ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
Ein Domänen-Shader muss an die Pipeline gebunden werden, wenn ein Hüllen-Shader gebunden ist. Insbesondere ist es nicht gültig, mit dem geometry-Shader direkt Hüllen-Shader-Kontrollpunkte zu streamen.