Condividi tramite


Separazione di dichiarazioni e codice per vertex shader

In DirectX 9.0 le dichiarazioni e il codice per un vertex shader non sono più associati quando viene creato il vertex shader. Un driver di versione DirectX 9.0 per un dispositivo che supporta vertex shader deve gestire creazioni e gestione separate di dichiarazioni e oggetti di codice. Tuttavia, questo driver DirectX 9.0 deve comunque essere in grado di gestire un oggetto vertex shader, che combina sia dichiarazioni che codice, perché il runtime DirectX 8.0 potrebbe richiedere di creare un oggetto vertex shader di questo tipo. Per altre informazioni, vedere Vertex Shader.

Il runtime di DirectX 9.0 assegna handle da pool di handle separati a oggetti dichiarazione e codice. Il driver DirectX 9.0 deve archiviare questi handle in matrici separate. Analogamente allo spazio di gestione del vertex shader in DirectX 8.0, DirectX 9.0 condivide lo spazio di gestione della dichiarazione del vertex shader con codici FVF (Flexible Vertex Format). L'impostazione del bit zero dell'handle indica una dichiarazione del vertex shader; in caso contrario, un codice FVF. Per altre informazioni, vedere il rasterizzatore di riferimento (codice di esempio refrast.cpp ).

Il driver DirectX 9.0 riceve una dichiarazione vertex shader quando elabora il codice dell'operazione D3DDP2OP_CREATEVERTEXSHADERDECL nella funzione D3dDrawPrimitives2 . Struttura D3DHAL_DP2CREATEVERTEXSHADERDECL e una matrice di strutture D3DVERTEXELEMENT9 che definiscono gli elementi vertice che costituiscono la dichiarazione shader seguono il codice dell'operazione nel flusso di comandi. Se il driver DirectX 9.0 viene implementato per elaborare gli elementi dei vertici della dichiarazione dello shader, deve supportare tutti gli usi possibili dei dati dei vertici. In altre parole, deve supportare tutti i tipi D3DDECLUSAGE insieme a più significati (valori di indice di utilizzo) per tali tipi. Per altre informazioni su D3DVERTEXELEMENT9 e D3DDECLUSAGE, vedere la documentazione più recente di DirectX SDK.

Il driver DirectX 9.0 riceve il codice del vertex shader quando elabora il codice dell'operazione di D3DDP2OP_CREATEVERTEXSHADERFUNC. Una struttura D3DHAL_DP2CREATEVERTEXSHADERFUNC e il codice del vertex shader seguono il codice dell'operazione nel flusso di comandi. Per altre informazioni sul formato di codice singolo shader e sui token che comprendono ogni codice shader, vedere Codici shader del driver Direct3D.

Il driver DirectX 9.0 elabora i codici di operazione D3DDP2OP_SETVERTEXSHADERDECL e D3DDP2OP_SETVERTEXSHADERFUNC per rendere la dichiarazione e il codice del vertex shader specifici corrente nell'assembler vertex shader. Il driver elabora i codici di operazione D3DDP2OP_DELETEVERTEXSHADERDECL e D3DDP2OP_DELETEVERTEXSHADERFUNC per rimuovere la dichiarazione e il codice del vertex shader dall'assembler vertex shader. Per ognuno di questi codici di operazioni, una struttura D3DHAL_DP2VERTEXSHADER segue nel flusso di comandi. Questa struttura contiene un solo membro che identifica l'handle per la dichiarazione o il codice da impostare o eliminare.