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 :
Appel de cette méthode dans le code program.cs :
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); } }
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 :
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
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); } }
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 public ref Device MyDevice { set { ... } }
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 ?
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();
Partager