Bonjour à tous,
J'ai un petit problème pour créer un exe utilisant Direct X Managé avec C# 2010.
Mon erreur est la suivante :
Je l'interprète de cette façon :"L'assembly en mode mixte est créé avec la version 'v1.1.4322' du runtime et ne peut pas être chargé dans le runtime 4.0 sans d'autres informations de configuration."
Les références que j'ai fait manuellementvers Microsoft.DirectX Microsoft.DirectX.Direct3D sont incorrectes. Elles ne correspondent pas à .NET4
Le problème c'est que ces assemblys n'apparaissent pas dans la fenêtre "Ajouter une Référence" donc je suis obligé d'aller les chercher manuellement (avec parcourir).
J'ai ben sûr installer le dernier SDK DirectX (Juin 2010) et d'aprés ce que j'ai lu les assemblys devraient se trouver dans le dossier "Developer Runtime\x86\" mais elles n'y sont pas.
Alors j'ai (bêtement ?) fait une reference ves les fichiers qui se trouvent dans le dossier "C:\Windows\Microsoft.NET\DirectX for Managed Code"... avec le résultat que l'on connait.
J'ai donc plusieurs questions :
- Est-ce que mon analyse est correcte ?
- Est-ce que quelqu'un utilise DirectX sous .NET4 avec Visual C# 2010 ?
- Savez-vous où je peux trouver les assemblys correctes ? (J'ai déjà demandé à mon ami google... et à Mr MSDN...)
Voici mon code :
Merci pour votre aide.
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 using System; using System.Linq; using System.Windows; using System.Windows.Forms; using System.Drawing; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; namespace Project1 { class Go { static void Main() { UsingDirectX form = new UsingDirectX(); if (form.InitializeDirect3D() == false) { MessageBox.Show("Could not initialize Direct3D.", "Error"); return; } form.Show(); while (form.Created) { form.Render(); Application.DoEvents(); } } } class UsingDirectX:Form { Device DX_Device = null; // Drawing device public UsingDirectX() { this.ClientSize = new Size(256,256); this.Text = "My First DirectX Program"; } public bool InitializeDirect3D() { try { PresentParameters pps = new PresentParameters(); pps.Windowed = true; pps.SwapEffect = SwapEffect.Discard; DX_Device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, pps); return true; } catch (DirectXException e) { MessageBox.Show(e.ToString(), "Error"); return false; } } public void Render() { if (DX_Device == null) { return; } DX_Device.Clear(ClearFlags.Target, Color.White, 1.0f, 0); DX_Device.BeginScene(); // Rendering is done here DX_Device.EndScene(); DX_Device.Present(); } } }
Partager