Précédent   Forum des professionnels en informatique > Applications > Développement 2D, 3D et Jeux > API graphiques > DirectX
DirectX Forum d'entraide sur le développement avec DirectX. Avant de poster -> FAQ DirectX
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2012, 15h31   #1
Invité régulier
 
Homme Quentin Ventura
Inscription : juin 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Homme Quentin Ventura
Localisation : Canada

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 30
Points : 8
Points : 8
Par défaut D3D 9 Et VerteDeclaration

Bonjour à tous,

J'ai un petit problème ... Mon programme fonctionnait très bien pour afficher un quadrilatère texturé en utilisant le VertexDeclaration suivant :

Code :
1
2
3
4
5
6
                    vertexDecl = new VertexDeclaration(D3Device, new[] 
                    {
        		        new VertexElement(0, 0, DeclarationType.Float4, DeclarationMethod.Default, DeclarationUsage.PositionTransformed, 0),
        		        new VertexElement(0, 16, DeclarationType.Float2, DeclarationMethod.Default, DeclarationUsage.TextureCoordinate, 0),
				        VertexElement.VertexDeclarationEnd
        	        });
Si j ai bien compris, le paramètre "PositionTransformed" signifie que les vertex passent directement par le Pixel Shader.

Maintenant je veux utiliser une camera. Donc je change le parametre "PositionTransformed" par "Position", et je teste en n'utilisant pas de camera justement. Normalement l'affichage devrait être le même non ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                D3Device.SetStreamSource(0, vertices, 0, 24);
                D3Device.VertexDeclaration = vertexDecl;
                D3Device.Indices = indices;
 
 
                int numPasses = effect.Begin();
                {
                    for (int i = 0; i < numPasses; i++)
                    {
                        effect.BeginPass(i);
                        D3Device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, /* Dynamic */6, 0, 2);
                        effect.EndPass();
                    }
                }
                effect.End();
Mon fichier .fx
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
struct VS_OUT
{
    float4 Position : POSITION;
    float2 TextureCoord : TEXCOORD0;
};
 
struct PS_OUT
{
    float4 Color : COLOR0;     
};
 
VS_OUT VS( float4 vPos : POSITION, float2 vTexCoord0 : TEXCOORD0 )
{
	VS_OUT output;
 
        output.Position = vPos;
        output.TextureCoord = vTexCoord0;
 
        return output;
}
 
PS_OUT PS( VS_OUT input)
{
	PS_OUT output;
	output.Color = float4(0.0f, 1.0f, 0.0f, 1.0f);
        return output;
}
 
technique Render
{
    pass P0
    {
		VertexShader = compile vs_3_0 VS();
		PixelShader = compile ps_3_0 PS();
    }
}
Et la ca ne m affiche rien du tout ... Mes coordonnées sont corrects

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
X:0 Y:813 Z:0 W:1
X:0 Y:129 Z:0 W:1
X:1058 Y:129 Z:0 W:1
X:1058 Y:813 Z:0 W:1
 
indices = new short[]{
    0,1,2,
    0,2,3
};
 
TextureCoord = new Vector2(0.0f, 1.0f)
TextureCoord = new Vector2(0.0f, 0.0f)
TextureCoord = new Vector2(1.0f, 0.0f)
TextureCoord = new Vector2(1.0f, 1.0f)
qventura est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 17h14   #2
Invité régulier
 
Homme Quentin Ventura
Inscription : juin 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Homme Quentin Ventura
Localisation : Canada

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 30
Points : 8
Points : 8
Ok, mauvais système de coordonnées, PosistionTransformed se base sur les coordonnées écrans (pixel donc) alors que Position utilise un système -1 / 1
qventura est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h19.


 
 
 
 
Partenaires

Hébergement Web