.NET und Direct3D
-
Irgendwie habe ich die Schnauze voll von der MFC..
*g*Ich will meine GUI für meinen Editor eigentlich lieber mit .NET machen. Das Rendern hingegen (auch die ganze Initialisation von Direct3D) möchte ich aber mit C++ machen. Kann man das einigermaßen gut verbinden? Oder wie kann ich in ein bestehendes C# .NET Projekt DirectX einbinden?
-
Ich habe mich jetzt entschieden alles komplett in C# zu schreiben.
Ich habe es jetzt hinbekommen Direct3D zu initialisieren. In meinem Fenster habe ich eine Picture-Box erstellt, in das gerendert werden soll.
Wenn ich das Programm starte, bleibt meine Picture-Box aber leer! Erst wenn ich die Größe des Fensters etwas verändere, wird etwas gerendert. Was ist das Problem? Woran liegt das?public Form1() { InitializeComponent(); renderer=new Renderer(); renderer.Init(pictureBox1); } private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { renderer.ClearScreen(); }
Und jetzt die Renderer-Klasse:
public void Init(System.Windows.Forms.Control control) { PresentParameters presentParams = new PresentParameters(); presentParams.Windowed = true; presentParams.BackBufferCount = 1; presentParams.SwapEffect = SwapEffect.Discard; presentParams.EnableAutoDepthStencil = false; //presentParams.PresentFlag = PresentFlag.None; presentParams.BackBufferWidth = control.Width; presentParams.BackBufferHeight =control.Height; presentParams.BackBufferFormat = Microsoft.DirectX.Direct3D.Format.Unknown; presentParams.FullScreenRefreshRateInHz = 0; presentParams.PresentationInterval = PresentInterval.Immediate; presentParams.DeviceWindow = control; device= new Device(0,DeviceType.Hardware, control, CreateFlags.HardwareVertexProcessing, presentParams); } public void ClearScreen() { device.Clear(ClearFlags.Target,System.Drawing.Color.Blue,1.0f,0); device.Present() }
Was mache ich denn falsch?