[D3D] Question sur la déclaration dex vertex shaders

Question sur la déclaration dex vertex shaders [D3D] - Programmation

Marsh Posté le 07-04-2002 à 11:43:28    

J'ai une petite question sur la déclaration des vertex shaders: on doit créer un tableau de DWORD, où on place les déclarations des inputs registers, qu'on utilise lors de l'appel de la fonction IDirect3DDevice8::CreateVertexShader().
 
Mais je me demandais à quoi pouvait donc bien servir cette déclaration. Est-ce que cela permet de dire où se trouvera par exemple la position du vertex dans les inputs registers?
 
Peut-on faire par exemple:
 
DWORD decl[] = {D3DVSD_STREAM(0),
                D3DVSD_REG(5, D3DVSDT_FLOAT3),
                D3DVSD_END()};
 
Pour mettre la position du vertex dans l'input register 5 (v5)?
 
Si c'est exemple est correct, je ne comprends pas comment Direct3D fait pour savoir qu'on veut mettre la position en v5, car on aurait très bien pu vouloir mettre la normal en v5.
 
Et si l'exemple n'est pas correct, y a-t-il un ordre pour ces déclarations? Sont-elles toujours les mêmes? Comment les connaitre?
 
Voilà.

Reply

Marsh Posté le 07-04-2002 à 11:43:28   

Reply

Marsh Posté le 07-04-2002 à 19:21:03    

Ils sont pas là les amateurs de D3D? Bah, de toute façon le week-end c'est toujours comme ça :D

Reply

Marsh Posté le 07-04-2002 à 22:11:38    

J'ai vu d'autres exemples de déclaration des input registers de vertex shaders avec les structures de vertex correspondants.
 
Je pense avoir compris comment ça marchait: en fait l'ordre des déclaration doit être le même que celui dans la structure de vertex.
 
 
Par exemple:
 
DWORD decl[] = {
D3DVSD_STREAM(0),
D3DVSD_REG(0, D3DVSDT_FLOAT3),   //Position
D3DVSD_REG(1, D3DVSDT_D3DCOLOR), //Diffuse
D3DVSD_REG(2, D3DVSDT_FLOAT3),   //Normal
D3DVSD_END()};
 
pour cette strucure de vertex:
 
struc SVertex
{
float position;
D3DCOLOR diffuse;
float normal;
};
 
 
Bon, j'espère que je me suis pas trompé :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed