Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich DirectX in meine Anwendung einbinden?
DSS
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

Wie kann ich DirectX in meine Anwendung einbinden?

beantworten | zitieren | melden

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?

Moderationshinweis von gfoidl (31.05.2019 - 14:07)

Bitte Code-Tags verwenden.

private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.430

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
DSS
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

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 :-)
private Nachricht | Beiträge des Benutzers
DSS
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

Nachdem ich mal das .NET-Framework 2.0 benutzte, scheint die Sache auf einmal zu funktionieren.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.018

beantworten | zitieren | melden

D.h. Du hast vorher noch 1.1 verwendet, oder 3.x oder...?
private Nachricht | Beiträge des Benutzers
DSS
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

4.7.2 wird normalerweise verwendet.
private Nachricht | Beiträge des Benutzers