Versuche Anhand der Beispiele von http://www.riemers.net/eng/Tutorials/DirectX/Csharp/Series1/tut2.php das DirectX einzubinden. Bisher ohne Erfolg, hier der Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
namespace TestDirectX1
{
public partial class Form1 : Form
{
private Device device;
public Form1()
{
InitializeComponent();
}
public void InitializeDevice()
{
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true;
presentParams.SwapEffect = SwapEffect.Discard;
device = new Device(0, DeviceType.Reference, this, CreateFlags.SoftwareVertexProcessing, presentParams);
}
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
device.Clear(ClearFlags.Target, Color.DarkSlateBlue, 1.0f, 0);
device.Present();
}
}
}
Im Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestDirectX1
{
static class Program
{
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
using (Form1 our_directx_form = new Form1())
{
Application.Run(our_directx_form);
our_directx_form.InitializeDevice();
}
}
}
}
Die Applikation startet, aber die Software geht in eine Dauerschleife.
Wo ist der Fehler?
Bitte Code-Tags verwenden.
Die Zeile
our_dx_form.InitializeDevice();
muß (selbstverständlich) vor
Application.Run(our_directx_form);
Steht ja auch so im Code unten auf der Tutorial-Seite 😉
Besser wäre es aber wohl, wenn InitializeDevice()
direkt im Konstruktor der Form aufgerufen würde.
PS: Und editiere deinen Beitrag und packe den Code in C#-Tags.
Sobald ich die Zeilen our_dx_form.InitializeDevice(); und Application.Run(our_directx_form); vertausche, dann zeigt es mir keine Form mehr an.
Muss mich zuerst mal an dieses Forum gewöhnen 😃
Nachdem ich mal das .NET-Framework 2.0 benutzte, scheint die Sache auf einmal zu funktionieren.
D.h. Du hast vorher noch 1.1 verwendet, oder 3.x oder...?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code