Procedura: Creare uno hull shader
Uno hull shader è la prima delle tre fasi che interagiscono per implementare tassellatura. L'hull shader controlla la fase del tassellatore e la fase del domain shader. In questo argomento viene illustrato come creare uno hull shader.
Uno hull shader trasforma un set di punti di controllo di input (da un vertex shader) in un set di punti di controllo di output. Il numero di punti di input e output può variare nel contenuto e nel numero a seconda della trasformazione (una trasformazione tipica sarebbe una trasformazione di base).
Uno hull shader fornisce anche informazioni costanti per le patch, come i fattori di tassellatura, per lo shader di dominio e il tassellatore. La fase di tessellazione a funzione fissa utilizza i fattori di tassellatura e altri stati dichiarati in un hull shader per determinare il grado di tassellazione.
Per creare un hull shader
Progettare un hull shader. Vedere Procedura: Progettare un hull shader.
Compilare il codice dello shader
Creare un oggetto hull-shader usando ID3D11Device::CreateHullShader.
HRESULT CreateHullShader( const void *pShaderBytecode, SIZE_T BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11HullShader **ppHullShader );
Inizializza la fase della pipeline usando ID3D11DeviceContext::HSSetShader.
void HSSetShader( ID3D11HullShader *pHullShader, ID3D11ClassInstance *const *ppClassInstances, UINT NumClassInstances );
Un domain shader deve essere associato alla pipeline se è associato uno hull shader. In particolare, non è valido utilizzare il geometry shader per trasmettere direttamente i punti di controllo dello hull shader.
Argomenti correlati
-
Come usare Direct3D 11