Bonjour à tous,

Aujourd'hui, l'utilisation des pointeurs avec c# :

Je suis en train de faire un p'tit moteur 3D avec DirectX et je suis confronté à un petit problème :

Voilà un bout de code qui permet de modifier une instance de Device depuis l'appel de la méthode d'une classe Balle, un bête ref :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public void BalleRendering(ref Device device)
 {
      for (int i = 0; i < meshmat.Length; i++)
      {
            device.Material = meshmat[i];
            device.SetTexture(0, meshtext[i]);
 
            mesh.DrawSubset(i);
      }
 
 }
Appel de cette méthode dans le code program.cs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 balle.BalleRendering(ref device);
 
//device a été modifié gràce à l'appel de BalleRendering()
device.EndScene();

Mais :
J'aimerais cependant que ma signature de méthode soit plus du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 public void BalleRendering()
{
    for (int i = 0; i < meshmat.Length; i++)
    {
         device.Material = meshmat[i];
         device.SetTexture(0, meshtext[i]);
          //On dessine le mesh
           mesh.DrawSubset(i);
    }
}
Et que dans mon objet, je possède une référence à l'objet device. Un truc du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public ref Device MyDevice
{
    set { ... }
}
Ensuite dans mon program.cs, je ferai l'appel de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
//on "lie" l'objet device à l'objet balle
balle.MyDevice = device;
 
balle.BalleRendering();
 
device.EndScene();
Alors j'ai pensé aux pointeurs de c++ mais il doit bien exister une autre manière non ? Ou alors je dois forcément passer par du code unsafe ? Ou alors je me plane complètement ?