IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

[Débutant] Cube qui ne s'affiche pas


Sujet :

DirectX

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut [Débutant] Questions diverses de débutant ;-)
    Bon je sais pas si vous avez lu dans un autre post mais je viens de me mettre au directX en c#.
    J'essaie de faire une chose basique: afficher un cube. Le problème c'est qu'il ne s'affiche pas et je bataille depuis plus de 2h. Voici le code (un peu long):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    using System;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Runtime.InteropServices;
     
    using Microsoft.DirectX;
    using Microsoft.DirectX.Direct3D;
     
    namespace VerticesTutorial
    {
    	public class Vertices : Form
    	{
    		// Our global variables for this project
    		Device device = null; // Our rendering device
    		VertexBuffer vertexBuffer = null;
     
    		private const int numVerts = 36;
    		//variable utilisé pour générer des nombres aléatoires
    		//afin d'avoir des couleurs aléatoires
    		private Random rnd = new Random();
     
    		public Vertices()
    		{
    			// Set the initial size of our form
    			this.ClientSize = new System.Drawing.Size(300,300);
    			// And its caption
    			this.Text = "Direct3D Tutorial 2 - Vertices";
    		}
     
    		public bool InitializeGraphics()
    		{
    			try
    			{
    				// Now let's setup our D3D stuff
    				PresentParameters presentParams = new PresentParameters();
    				presentParams.Windowed=true;
    				presentParams.SwapEffect = SwapEffect.Discard;
    				device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
    				this.OnCreateDevice(device, null);
    				return true;
    			}
    			catch (DirectXException)
    			{ 
    				return false; 
    			}
    		}
     
    		//mon vecteur personalisé
    		#region CustomVertex
    		const VertexFormats customVertexFormat = VertexFormats.Position | VertexFormats.Diffuse | VertexFormats.Texture1;
    		private struct CustomVertex 
    		{
    			public float X;
    			public float Y;
    			public float Z;
    			public int color;			
    			public float tu;
    			public float tv;
    		}
    		private CustomVertex CreateVertex(float x, float y, float z, float tu, float tv)
    		{
    			CustomVertex custVertex = new CustomVertex();
    			custVertex.X = x; custVertex.Y = y; custVertex.Z = z;
     
    			custVertex.color = (Color.FromArgb(rnd.Next(0,255),rnd.Next(0,255),rnd.Next(0,255),rnd.Next(0,255))).ToArgb();
     
    			custVertex.tu = tu; custVertex.tv = tv;
    			return custVertex;
    		}
    		#endregion
     
    		public void OnCreateDevice(object sender, EventArgs e)
    		{
    			Device dev = (Device)sender;
    			// Now Create the VB
    			vertexBuffer = new VertexBuffer(typeof(CustomVertex), numVerts, dev, Usage.WriteOnly, customVertexFormat, Pool.Default);
    			vertexBuffer.Created += new System.EventHandler(this.OnCreateVertexBuffer);
    			this.OnCreateVertexBuffer(vertexBuffer, null);
    		}
    		public void OnCreateVertexBuffer(object sender, EventArgs e)
    		{
    			CustomVertex[] verts = new CustomVertex[numVerts];
     
    			// 1st facet --------------------------------------------------------- 
    			//triangle 1
    			verts[0] = CreateVertex(-50, -50, -50, 0, 0);
    			verts[1] = CreateVertex(50, -50, -50, 1, 0);
    			verts[2] = CreateVertex(-50, 50, -50, 0, 1);
     
    			//triangle 2
    			verts[3] = CreateVertex(-50, 50, -50, 0, 1);
    			verts[4] = CreateVertex(50, -50, -50, 1, 0);
    			verts[5] = CreateVertex(50, 50, -50, 1, 1);
     
    			// 2nd facet --------------------------------------------------------- 
    			//triangle 1
    			verts[6] = CreateVertex(50, -50, -50, 0, 0);
    			verts[7] = CreateVertex(50, 50, -50, 1, 0);
    			verts[8] = CreateVertex(50, -50, 50, 0, 1);
     
    			//triangle 2
    			verts[9] =  CreateVertex(50, -50, 50, 0, 1);
    			verts[10] =  CreateVertex(50, 50, -50, 1, 0);
    			verts[11] =  CreateVertex(50, 50, 50, 1, 1);
     
    			// 3rd facet --------------------------------------------------------- 
    			//triangle 1
    			verts[12] =  CreateVertex(-50, -50, -50, 0, 0);
    			verts[13] =  CreateVertex(50, -50, -50, 1, 0);
    			verts[14] =  CreateVertex(-50, -50, 50, 0, 1);
     
    			//triangle 2
    			verts[15] =  CreateVertex(-50, -50, 50, 0, 1);
    			verts[16] =  CreateVertex(50, -50, -50, 1, 0);
    			verts[17] =  CreateVertex(50, -50, 50, 1, 1);
     
     
    			// 4th facet --------------------------------------------------------- 
    			//triangle 1
    			verts[18] =  CreateVertex(-50, -50, -50, 0, 0);
    			verts[19] =  CreateVertex(-50, 50, -50, 1, 0);
    			verts[20] =  CreateVertex(-50, -50, 50, 0, 1);
     
    			//triangle 2
    			verts[21] =  CreateVertex(-50, -50, 50, 0, 1);
    			verts[22] =  CreateVertex(-50, 50, -50, 1, 0);
    			verts[23] =  CreateVertex(-50, 50, 50, 1, 1);
     
    			// 5th facet --------------------------------------------------------- 
    			//triangle 1
    			verts[24] =  CreateVertex(-50, -50, 50, 0, 0);
    			verts[25] =  CreateVertex(50, -50, 50, 1, 0);
    			verts[26] =  CreateVertex(-50, 50, 50, 0, 1);
     
    			//triangle 2
    			verts[27] =  CreateVertex(-50, 50, 50, 0, 1);
    			verts[28] =  CreateVertex(50, -50, 50, 1, 0);
    			verts[29] =  CreateVertex(50, 50, 50, 1, 1);
     
    			// 6th facet --------------------------------------------------------- 
    			//triangle 1
    			verts[30] =  CreateVertex(-50, 50, -50, 0, 0);
    			verts[31] =  CreateVertex(50, 50, -50, 1, 0);
    			verts[32] =  CreateVertex(-50, 50, 50, 0, 1);
     
    			//triangle 2
    			verts[33] =  CreateVertex(-50, 50, 50, 0, 1);
    			verts[34] =  CreateVertex(50, 50, -50, 1, 0);
    			verts[35] =  CreateVertex(50, 50, 50, 1, 1);
     
    			VertexBuffer buf = (VertexBuffer)sender;
    			GraphicsStream stm = buf.Lock(0, 0, 0);
    			stm.Write(verts);
    			buf.Unlock();
    		}
     
    		private void Render()
    		{
    			if (device == null) 
    				return;
     
    			//Clear the backbuffer to a blue color (ARGB = 000000ff)
    			device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0f, 0);
    			//Begin the scene
    			device.BeginScene();
     
    			device.SetStreamSource( 0, vertexBuffer, 0);
    			device.VertexFormat = customVertexFormat;
    			device.DrawPrimitives(PrimitiveType.TriangleList, 0, 12);
    			//End the scene
    			device.EndScene();
    			device.Present();
    		}
    		protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
    		{
    			this.Render(); // Render on painting
    		}
    		protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
    		{
    			if ((int)(byte)e.KeyChar == (int)System.Windows.Forms.Keys.Escape)
    				this.Close(); // Esc was pressed
    		}
     
    		/// <summary>
    		/// The main entry point for the application.
    		/// </summary>
    		static void Main() 
    		{
     
    			using (Vertices frm = new Vertices())
    			{
    				if (!frm.InitializeGraphics()) // Initialize Direct3D
    				{
    					MessageBox.Show("Could not initialize Direct3D.  This tutorial will exit.");
    					return;
    				}
    				frm.Show();
     
    				// While the form is still valid, render and process messages
    				while(frm.Created)
    				{
    					frm.Render();
    					Application.DoEvents();
    				}
    			}
    		}
     
    	}
    }
    Ca affiche que le fond bleu et je ne sais pas pourquoi le cube ne s'affiche pas!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Salut

    Essaye déjà tout ça :
    http://jeux.developpez.com/faq/direc...LEMES_probleme

    Et dis nous ce que ça donne.

    Tu peux aussi t'inspirer des tutoriels :
    http://funkydata.developpez.com/csharp/directx/

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    J'avais déjà fait les tutos de funkydata. De plus, en débug, je n'est aucune erreur!
    Je cherche .........

  4. #4
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    Il n'y a aucune de matrice de projection, de vue ou de transformation dans ton code... il y a des fortes chances que le problème vienne de là

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Alors j'ai rajouté ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected void SetupMatrices()
    		{
    			float angle = Environment.TickCount / 500.0F;
    			device.Transform.World = Matrix.RotationY(angle);
    			device.Transform.View = Matrix.LookAtLH(new Vector3(0, 0.5F, -3), 
    				new Vector3(0, 0.5F, 0), new Vector3(0, 1, 0));
    			device.Transform.Projection = 
    				Matrix.PerspectiveFovLH((float)Math.PI/4.0F, 1.0F, 1.0F, 5.0F);
    		}
    Et dans après mon BeginScene, j'appelle la fonction mais ça ne marche toujours pas. Ca m'énerve ......

  6. #6
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    Citation Envoyé par probordelais
    Et dans après mon BeginScene, j'appelle la fonction mais ça ne marche toujours pas. Ca m'énerve ......
    Oui bon déjà petit conseil pour te faciliter la vie vue que n'a pas pas l'air trés à l'aise avec les transformations : Créé ton cube avec des positions pour tes vertices comprises entre -1 et 1.
    Ensuite tes matrices ne sont pas du tout adaptées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    device.Transform.World = Matrix.Translation(new Vector3(0,0,3));
    device.Transform.View = Matrix.LookAtLH(new Vector3(0, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 1, 0));
    device.Transform.Projection = Matrix.PerspectiveFovLH(Geometry.DegreeToRadian(65.0f), 1.0F, 0.5f, 100.0f);
    Voilà, si tu veux absolument garder les -50, 50 pour les positions de tes vertices alors modifie la matrice de transformation comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    device.Transform.World = Matrix.Translation(new Vector3(0,0,100));
    Je pense qu'avec ca tu devrais voir le cube

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Bon là j'ai quelque chose mais ça ressemble à tout sauf à un cube

    J'ai trouvé un bon tuto sur le net. Ils expliquent bien les matrices. Donc je me lance. C'est avec des triangles. Donc dès que je maitrise les triangles, je passe aux cubes ;-)

    Sinon, le truc où j'en chie, c'est sur la position des vertices. J'ai trop de mal à m'imaginer le truc!

  8. #8
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    Citation Envoyé par probordelais
    Bon là j'ai quelque chose mais ça ressemble à tout sauf à un cube

    J'ai trouvé un bon tuto sur le net. Ils expliquent bien les matrices. Donc je me lance. C'est avec des triangles. Donc dès que je maitrise les triangles, je passe aux cubes ;-)

    Sinon, le truc où j'en chie, c'est sur la position des vertices. J'ai trop de mal à m'imaginer le truc!
    Je viens de me rendre compte que tu n'initialises pas d'index buffer... c'est peut être pourquoi ton cube n'en est pas un
    Pour les vertices j'avais mis un petit schèma sur mes tutos http://funkydata.developpez.com/csha...tx/primitives/

    Le cube est ni plus ni moins que des triangles que tu lies entre eux. Décompose donc ton cube en prenant en compte le schèma des "triangle list" et tu devrais le visualiser un peu mieux

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Bon je vais encore faire mon boulet mais bon ... Je commence à comprendre les primitives. Donc j'essaie de construire mon cube triangle par triangle. Le truc c'est que je ne pige pas un truc. Quand je construis mon premier carré, il est séparé en 2 sur le milieu (normal vu qu'il s'agit de 2 triangles). Le truc c'est que j'aimerai faire disparaitre cette démarquation pour que l'on voit vraiment un carré et non 2 triangles.

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
     // Commentez cette ligne pour avoir 2 triangles
     //#define SINGLETRIANGLE  
     
     
     // Commentez cette ligne pour utiliser le culling par défaut
     #define CULLNONE        
     
     
     using System;
     using System.Drawing;
     using System.Collections;
     using System.ComponentModel;
     using System.Windows.Forms;
     using System.Data;
     
     
     using Microsoft.DirectX;
     using Microsoft.DirectX.Direct3D;
     
     
     namespace Craig.DirectX.Direct3D
     {
       public class Game : System.Windows.Forms.Form
       {
         private Device device;
         private VertexBuffer vertices;
    	   private int i;
     
     
         static void Main() 
         {
           Game app = new Game();
     
     
           app.Width = 400;
           app.Height = 400;
     
     
           app.InitializeGraphics();
     
     
           app.Show();
     
     
           while (app.Created)
           {
             app.Render();
             Application.DoEvents();
           }
         }
     
     
     
     
         protected bool InitializeGraphics()
         {
           PresentParameters pres = new PresentParameters();
           pres.Windowed = true; 
           pres.SwapEffect = SwapEffect.Discard;
     
     
           device = new Device(0, DeviceType.Hardware, this, 
             CreateFlags.SoftwareVertexProcessing, pres);
     
     
           vertices = CreateVertexBuffer(device);
     
     
     #if CULLNONE
           device.RenderState.CullMode = Cull.None;
     #endif 
     
     
           device.VertexFormat = CustomVertex.PositionNormalColored.Format;
     
     
           return true;  
         }
     
     
     
         protected void PopulateVertexBuffer(VertexBuffer vertices)
         {
    		CustomVertex.PositionNormalColored[] verts = 
    		(CustomVertex.PositionNormalColored[]) vertices.Lock(0, 0);
     
     
    		i = 0;
    		//1er triangle
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			0,     0, 0, 
    			0,     0, -1, 
    			Color.Red.ToArgb());
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			-1, 0, 0, 
    			0,     0, -1, 
    			Color.Green.ToArgb());
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			-1,  1, 0, 
    			0,     0, -1, 
    			Color.Blue.ToArgb());
    		 //2e triangle <=> 1er carré
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			-1,     1, 0, 
    			0,     0, -1, 
    			Color.Red.ToArgb());
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			0,  1, 0, 
    			0,     0, -1, 
    			Color.Blue.ToArgb());
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			0, 0, 0, 
    			0,     0, -1, 
    			Color.Green.ToArgb());
    		 /*/3e triangle
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			0,     1, 0, 
    			0,     0, 1, 
    			Color.Red.ToArgb());
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			-1,  1, 0, 
    			0,     0, 1, 
    			Color.Blue.ToArgb());
    		verts[i++] = new CustomVertex.PositionNormalColored(
    			-1, 1, 1, 
    			0,     0, 1, 
    			Color.Green.ToArgb());
    		 //4e triangle <=> 2e carré
    		 verts[i++] = new CustomVertex.PositionNormalColored(
    			 0,     1, 0, 
    			 0,     0, -1, 
    			 Color.Red.ToArgb());
    		 verts[i++] = new CustomVertex.PositionNormalColored(
    			 -1,  1, 0, 
    			 0,     0, -1, 
    			 Color.Blue.ToArgb());
    		 verts[i++] = new CustomVertex.PositionNormalColored(
    			 -1, 1, 1, 
    			 0,     0, -1, 
    			 Color.Green.ToArgb());*/
     
     
    		vertices.Unlock();
         }
     
     
         protected VertexBuffer CreateVertexBuffer(Device device)
         {
           VertexBuffer buf = new VertexBuffer(
             typeof(CustomVertex.PositionNormalColored), 
             6, // ******************ATTENTION!!!***********************
             device, 0, 
             CustomVertex.PositionNormalColored.Format, Pool.Default);
     
     
           PopulateVertexBuffer(buf);
     
     
           return buf;
         }
     
     
     
         protected void SetupMatrices()
         {
           float angle = Environment.TickCount / 500.0F;
           //device.Transform.World = Matrix.RotationY(angle);
           device.Transform.View = 
             Matrix.LookAtLH(new Vector3(0, 2F, -3), 
               new Vector3(0, 0.5F, 0), new Vector3(0, 1, 0));
           device.Transform.Projection = 
             Matrix.PerspectiveFovLH((float)Math.PI/4.0F, 
       1.0F, 1.0F, 10.0F);
         }
     
     
         protected void SetupLights()
         {
           device.Lights[0].Diffuse = Color.Blue;
           device.Lights[0].Type = LightType.Directional;
           device.Lights[0].Direction = new Vector3(-3, -1, 3);
     
     
           device.Lights[0].Update(); 
     
     
           device.Lights[0].Enabled = true;
     
     
           device.RenderState.Ambient = Color.FromArgb(0x40, 0x40, 0x40);
         }
     
     
         protected void Render()
         {
           device.Clear(ClearFlags.Target, Color.Bisque, 1.0F, 0);
           device.BeginScene();
           SetupMatrices();
           SetupLights();
     
     
           device.SetStreamSource(0, vertices, 0);
     
    	   device.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);      
     
     
           device.EndScene();
           device.Present();
         }
     
     
       }
     }
    Images attachées Images attachées  

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il suffit de donner la même couleur aux deux sommets qui partagent une même position.

  11. #11
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Génial merci laurent

    Sinon je reviens à la charge avec mon cube!! Je commence à comprendre les matrices, la gestion de la caméra mais je bloque sur les lumières et les vecteurs normaux!!!

    Lorsque je fais tourner mon cube, c'est pas du tout réaliste la lumière!!! Plutot que vous décrire comment ça fait, je vous envoi le rar de mon projet. Si quelqu'un pouvait jeter un coup d'oeil rapide ça m'aiderait bcp!
    Fichiers attachés Fichiers attachés

  12. #12
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Bon ça y est, je commence à comprendre les lumières. Maintenant, je veux faire tourner mon cube grace à la souris.
    J'ai écrit ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    private void Game_MouseDown(object sender, MouseEventArgs e)
           {
               mouseX = e.X;
               mouseY = e.Y;
           }
     
           private void Game_MouseMove(object sender, MouseEventArgs e)
           {
               if (e.Button == MouseButtons.Left)
               {
                   RotationMatrices((float)(e.X - mouseX) / 100.0f, (float)(e.Y - mouseY) / 100.0f, 0);
     
     
                   mouseX = e.X;
                   mouseY = e.Y;
               }		
           }
    Le truc, c'est que si je mets un point d'arret n'importe où, ben il ne s'arrete pas donc il ne passe pas dans les fonctions et mon cube ne tourne pas. Quelqu'un à une idée?

  13. #13
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Personne n'a une idée???

  14. #14
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    Citation Envoyé par probordelais
    Le truc, c'est que si je mets un point d'arret n'importe où, ben il ne s'arrete pas donc il ne passe pas dans les fonctions et mon cube ne tourne pas. Quelqu'un à une idée?
    Ben si il ne passe jamais dans tes fonctions c'est déjà à la base que ton problème ne se trouve pas dans celle-ci. Il est donc difficile d'avoir une idée vu que c'est la partie de ton code que tu nous donnes. Il faudrait voir ce qui se passe plus haut (lors de l'initialisation des évènements par exemple).

  15. #15
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Voili voulou:
    Je balance tout!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
     // Commentez cette ligne pour avoir 2 triangles
     //#define SINGLETRIANGLE  
     
     
     // Commentez cette ligne pour utiliser le culling par défaut
     #define CULLNONE        
     
     
     using System;
     using System.Drawing;
     using System.Collections;
     using System.ComponentModel;
     using System.Windows.Forms;
     using System.Data;
     
     
     using Microsoft.DirectX;
     using Microsoft.DirectX.Direct3D;
    using test_perso;
     
     
     namespace Craig.DirectX.Direct3D
     {
       public class Game : System.Windows.Forms.Form
       {
         private Device device;
         private VertexBuffer vertices;
           private int i;
           float angle = 0;
           float mouseX, mouseY;
           private Panel fenetre;
     
     
         static void Main() 
         {
           Game app = new Game();
     
     
           app.Width = 400;
           app.Height = 400;
     
     
           app.InitializeGraphics();
     
     
           app.Show();
     
     
           while (app.Created)
           {
             app.Render();
             Application.DoEvents();
           }
         }
     
     
     
     
         protected bool InitializeGraphics()
         {
           PresentParameters pres = new PresentParameters();
           pres.Windowed = true; 
           pres.SwapEffect = SwapEffect.Discard;
     
             // Demande à Direct3D de créer un z-buffer pour nous
             pres.EnableAutoDepthStencil = true; 
             pres.AutoDepthStencilFormat = DepthFormat.D16;
     
           device = new Device(0, DeviceType.Hardware, this, 
             CreateFlags.SoftwareVertexProcessing, pres);
     
     
           vertices = CreateVertexBuffer(device);
     
     
     #if CULLNONE
           device.RenderState.CullMode = Cull.None;
     #endif 
     
     
           device.VertexFormat = CustomVertex.PositionNormal.Format;
     
           Camera camera = new Camera(device);
     
     
           return true;  
         }
     
     
           #region création du cube
         protected void PopulateVertexBuffer(VertexBuffer vertices)
         {
            CustomVertex.PositionNormal[] verts = 
            (CustomVertex.PositionNormal[]) vertices.Lock(0, 0);
     
     
            i = 0;
            //1er triangle <=> 1er carré (devant)
            verts[i++] = new CustomVertex.PositionNormal(
    	        1,     -1, -1, 
    	        0,     0, 1);
            verts[i++] = new CustomVertex.PositionNormal(
    	        -1, -1, -1, 
    	        0,     0, 1);
            verts[i++] = new CustomVertex.PositionNormal(
    	        -1,  1, -1, 
    	        0,     0, 1);
             //2e triangle
            verts[i++] = new CustomVertex.PositionNormal(
    	        -1,     1, -1, 
    	        0,     0, 1);
            verts[i++] = new CustomVertex.PositionNormal(
    	        1,  1, -1, 
    	        0,     0, 1);
            verts[i++] = new CustomVertex.PositionNormal(
    	        1, -1, -1, 
    	        0,     0, 1);
             //*****fin 1er carré*****
            //3e triangle <=> 2e carré (dessus)
            verts[i++] = new CustomVertex.PositionNormal(
    	        1,     1, -1, 
    	        0,     -1, 0);
            verts[i++] = new CustomVertex.PositionNormal(
    	        -1,  1, -1, 
    	        0,     -1, 0);
            verts[i++] = new CustomVertex.PositionNormal(
    	        -1, 1, 1, 
    	        0,     -1, 0);
             //4e triangle
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,     1, 1, 
    	         0,     -1, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,  1, 1, 
    	         0,     -1, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1, 1, -1, 
    	         0,     -1, 0);
             //*****fin 2e carré*****
             //5e triangle <=> 3e carré (droite)
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,     1, 1, 
    	         -1,     0, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,  1, -1, 
    	         -1,     0, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1, -1, 1, 
    	         -1,     0, 0);
             //6e triangle
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,     -1, 1, 
    	         -1,     0, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,  -1, -1, 
    	         -1,     0, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1, 1, -1, 
    	         -1,     0, 0);
    	         //*****fin 3e carré*****
             //7e triangle <=> 4e carré (derrière)
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,     -1, 1, 
    	         0,     0, -1);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,  1, 1, 
    	         0,     0, -1);
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1, 1, 1, 
    	         0,     0, -1);
             //8e triangle
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,     1, 1, 
    	         0,     0, -1);
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,  -1, 1, 
    	         0,     0, -1);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1, -1, 1, 
    	         0,     0, -1);
    	         //*****fin 4e carré*****
             //9e triangle <=> 5e carré (gauche)
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,     -1, 1, 
    	         1,     0, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,  -1, -1, 
    	         1,     0, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1, 1, -1, 
    	         1,     0, 0);
             //10e triangle
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,     1, -1, 
    	         1,     0, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,  1, 1, 
    	         1,     0, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1, -1, 1, 
    	         1,     0, 0);
    	         //*****fin 5e carré*****
             //11e triangle <=> 5e carré (dessous)
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,     -1, 1, 
    	         0,     1, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,  -1, 1, 
    	         0,     1, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         1, -1, -1, 
    	         0,     1, 0);
             //12e triangle
             verts[i++] = new CustomVertex.PositionNormal(
    	         1,     -1, -1, 
    	         0,     1, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1,  -1, -1, 
    	         0,     1, 0);
             verts[i++] = new CustomVertex.PositionNormal(
    	         -1, -1, 1, 
    	         0,     1, 0);
             //*****fin 6e carré*****
     
            vertices.Unlock();
         }
           #endregion
     
     
         protected VertexBuffer CreateVertexBuffer(Device device)
         {
           VertexBuffer buf = new VertexBuffer(
             typeof(CustomVertex.PositionNormal), 
             36, // ******************ATTENTION!!!***********************
             device, 0, 
             CustomVertex.PositionNormal.Format, Pool.Default);
     
           PopulateVertexBuffer(buf);
     
           return buf;
         }
     
     
     
         protected void SetupMatrices()
         {
           angle = Environment.TickCount / 500.0F;
           device.Transform.World = Matrix.RotationX(angle);
             //device.Transform.World = Matrix.RotationAxis(new Vector3(1,1,0),angle);
         }
     
     
           //ces fonctions furent prise du livre Beginning .Net Game Programming
           #region Aide à la rotation, translation et agrandissement
           public void RotationMatrices(float x, float y, float z) 
           {
               device.Transform.World = Matrix.Multiply(device.Transform.World, Matrix.RotationX((float)(x * Math.PI / 180)));
               device.Transform.World = Matrix.Multiply(device.Transform.World, Matrix.RotationY((float)(y * Math.PI / 180)));
               device.Transform.World = Matrix.Multiply(device.Transform.World, Matrix.RotationZ((float)(z * Math.PI / 180)));
           }
     
           public void TranslationMatrices(float x, float y, float z) 
           {
               device.Transform.World = Matrix.Multiply(device.Transform.World, Matrix.Translation(x, y, z));
           }
     
           public void ScaleMatrices(float x, float y, float z) 
           {
               device.Transform.World = Matrix.Multiply(device.Transform.World, Matrix.Scaling(x / 100, y / 100, z / 100));
           }
           #endregion
     
     
           protected void SetupLights()
           {
               device.RenderState.Lighting = true;
     
     
               device.Lights[0].Diffuse = Color.White;
               device.Lights[0].Specular = Color.White;
               device.Lights[0].Type = LightType.Directional;
               device.Lights[0].Direction = new Vector3(2, 2, -3);
               device.Lights[0].Update();
               device.Lights[0].Enabled = true;
     
     
               device.RenderState.Ambient = Color.FromArgb(0x40, 0x40, 0x40);
           }
     
       protected void SetupMaterials()
       {
           Material mat = new Material();
     
     
           // Configure les propriétés du matériau
     
     
           // L'objet lui meme sera bleu
           mat.Diffuse = Color.BlueViolet;
     
     
           // Nous voulons qu'il ait l'air un peu terne, donc peut être un reflet large et gris.
           mat.Specular = Color.Gray;
           mat.SpecularSharpness = 15.0F;
     
     
           device.Material = mat;
     
     
           // Très important, sans cela, il n'y a pas de spécularité
           device.RenderState.SpecularEnable = true;
       }
     
     
         protected void Render()
         {
           // Efface le z-buffer également. Important !
         device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Bisque, 1.0F, 0);
           device.BeginScene();
     
           SetupMatrices();
           SetupLights();
           SetupMaterials();
     
     
           device.SetStreamSource(0, vertices, 0);
     
           device.DrawPrimitives(PrimitiveType.TriangleList, 0, 12);      
     
     
           device.EndScene();
           device.Present();
         }
     
           private void InitializeComponent()
           {
               this.fenetre = new System.Windows.Forms.Panel();
               this.SuspendLayout();
               // 
               // fenetre
               // 
               this.fenetre.Location = new System.Drawing.Point(1, 3);
               this.fenetre.Name = "fenetre";
               this.fenetre.Size = new System.Drawing.Size(290, 272);
               this.fenetre.TabIndex = 0;
               // 
               // Game
               // 
               this.ClientSize = new System.Drawing.Size(292, 273);
               this.Controls.Add(this.fenetre);
               this.Name = "Game";
               this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Game_MouseMove);
               this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Game_MouseDown);
               this.ResumeLayout(false);
     
           }
     
           private void Game_MouseDown(object sender, MouseEventArgs e)
           {
               mouseX = e.X;
               mouseY = e.Y;
           }
     
           private void Game_MouseMove(object sender, MouseEventArgs e)
           {
               if (e.Button == MouseButtons.Left)
               {
                   RotationMatrices((float)(e.X - mouseX) / 100.0f, (float)(e.Y - mouseY) / 100.0f, 0);
     
     
                   mouseX = e.X;
                   mouseY = e.Y;
               }		
           }
     
       }
     }

  16. #16
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    J'ai une autre question (bien que la précédente concernant la souris soit toujours d'actualité )

    Bon mon but est donc de transformer un plan (maison) 2D en 3D. Pour les murs, je vais utiliser des cubes applatis et long. Comment faire pour tracer plusieurs murs. Car pour l'instant, j'arrive a en placer qu'un seul!

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Points : 275
    Points
    275
    Par défaut
    La fonction DrawPrimitive te demande de définir un point de départ dans le vertex buffer et un nombre de primitive à afficher. Ton vertexbuffer peut donc contenir les points de plusieurs formes 3D ( par exemple de 0 à 7 :un cube, de 8 à 15 un deuxieme cube) Puis : DrawPrimitive(..., 0, 12) un cube, et DrawPrimitive(..., 8, 12) un autre cube.

  18. #18
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Merci, c'est bien ce qu'il me semblait!

    Et personne n'a une solution pour la souris?

  19. #19
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    Pour la souris je vois pas trop ce qui cloche Bon ceci dit je peux pas tester ton code avant ce soir.
    Ceci dit je doute que cela ai un rapport quelconque avec DirectX. Je pencherais plutôt vers un problème de conception au niveau de ton application c#... à vérifier.

  20. #20
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 83
    Points
    83
    Par défaut
    Tu as pu testé alors?

    Je vois pas ce qui peut clocher car je n'ai rien mis dans mon appli. J'ai juste la form de base donc je vois pas d'où ça peut venir ...

    EDIT: c'est bon j'ai trouvé. En fait, je passais jamais dans la méthode qui initialize l'évènement souris. Le problème est reglé. A tte pour d'autres questions lol

Discussions similaires

  1. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  2. pages qui ne s'affichent pas
    Par luck dans le forum ASP
    Réponses: 4
    Dernier message: 19/07/2004, 11h35
  3. [Applet] BorderLayout qui ne s'affiche pas
    Par Invité(e) dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 29/04/2004, 11h39
  4. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo