Laden...

2D-Engine / Allgemeine Fragen zu GDI+

Erstellt von Jack_AI vor 16 Jahren Letzter Beitrag vor 16 Jahren 5.190 Views
J
Jack_AI Themenstarter:in
193 Beiträge seit 2007
vor 16 Jahren
2D-Engine / Allgemeine Fragen zu GDI+

Hallo Community.

Ich hoffe, ihr könnt mir weiterhelfen. Mir ist bewusst, dass das Thema GDI+ hier schon sehr häufig behandelt wurde. Trotzdem hoffe ich, dass ihr mir ein paar Fragen beantworten könnt.

Ich würde gerne eine Art 2D-Spiel mit C# programmieren. Aber da fangen die Probleme schon an. GDI+ scheint für ein simples 2D-Spiel die perfekte Wahl zu sein. Allerdings soll es nicht sehr leistungsfähig sein, d.h. aufwändige Berechnungen dauern zu lange.

Da wirft sich mir eine Frage auf: Wieso ist es so langsam, wenn es doch sozusagen das Fundament von 2D-Grafik in C# darstellt? Also muss doch GDI+ wiederum auf einem System* basieren, das schneller ist. Was für ein System ist das? Und wie kann ich als gemeiner C#-Coder dieses System benutzen, um schnellere Grafiken zu zeichnen? Es gibt hier zwar einen Thread, der zeigt, wie man GDI+ für schnellere Grafiken benutzen kann. Allerdings scheint man da mehr an GDI+ rumzubiegen, als auf Fundamente zurückzugreifen.

Vielleicht weiß jemand hier Bescheid, der mir GDI+ verständlicher machen kann.

Und noch mal kurz zu dem Thema 2D-Spiel. Ich habe hier bereits von einigen 3D-Systemen (wie MDX, XNA etc.) gehört, aber noch nie von einem 2D-System. Gibt es da etwas Vergleichbares oder muss ich auf MDX, XNA etc. zurückgreifen?

Danke im Voraus für Hilfe,
Jack

(*: Ich benutze das Wort "System", weil ich als Hobbyprogrammierer die Fachwörter immer durcheinander bringe. Ich hoffe, es ist trotzdem klar, was gemeint ist.)

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo Jack_AI

Ich würde gerne eine Art 2D-Spiel mit C# programmieren. Aber da fangen die Probleme schon an. GDI+ scheint für ein simples 2D-Spiel die perfekte Wahl zu sein. Allerdings soll es nicht sehr leistungsfähig sein, d.h. aufwändige Berechnungen dauern zu lange.

Ja, das ist leider so.

Da wirft sich mir eine Frage auf: Wieso ist es so langsam, wenn es doch sozusagen das Fundament von 2D-Grafik in C# darstellt? Also muss doch GDI+ wiederum auf einem System* basieren, das schneller ist. Was für ein System ist das? Und wie kann ich als gemeiner C#-Coder dieses System benutzen, um schnellere Grafiken zu zeichnen? Es gibt hier zwar einen Thread, der zeigt, wie man GDI+ für schnellere Grafiken benutzen kann. Allerdings scheint man da mehr an GDI+ rumzubiegen, als auf Fundamente zurückzugreifen.

GDI+ basiert auf GDI.
Wieso das so langsam ist, bzw. keine Alternative Möglichkeit (DirectX) genommen wurde, weiss ich nicht.
Siehe:

Die Optimierungen die hier unter anderem im Forum gezeigt werden, halte ich
für eher nicht praktikabel.
Wenn, dann lieber gleich etwas geeigneteres benutzen.

Und noch mal kurz zu dem Thema 2D-Spiel. Ich habe hier bereits von einigen 3D-Systemen (wie MDX, XNA etc.) gehört, aber noch nie von einem 2D-System. Gibt es da etwas Vergleichbares oder muss ich auf MDX, XNA etc. zurückgreifen?

Du kannst auch per 3D, 2D Zeichnen, und das wird Heute auch praktisch nur noch so gemacht.

Reine 2D Engines haben weniger Vorteile, werden eher nicht mehr weiterentwickelt und bspw. die DirectDraw (2D) Unterstützung für DirectX wurde ganz eingestampft (Also Obsolete eingestuft).

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

139 Beiträge seit 2006
vor 16 Jahren

Moinsen!

Ich bastel zur zeit auch in 2D rum und benutze dafür XNA. Es gibt aber auch alternativen SDL.NET was recht fix ist, und auch nciht so kompliziert wie XNA (naja XNA ist auch nicht kompliziert, aber man braucht ein wenig zeit um rein zu kommen).

SDL.NET
XNA Creators Club <- gibts viele nützliche Tuts und einführungen in XNA.
Ziggyware <- hier findeste auch viel zu 2D Programmierung in XNA

Gruss Ari
Wer lesen kann ist klar im vorteil!
MSDN
Dein Feund in allen fragen

J
Jack_AI Themenstarter:in
193 Beiträge seit 2007
vor 16 Jahren

Danke für eure Antworten bisher.

Mir ist inzwischen eingefallen, warum GDI+ so langsam sein könnte. Ich glaube, das liegt daran, dass bei GDI+ keine Arbeit von der Grafikkarte abgenommen wird. Nur eine Vermutung.

Ich habe mir mal XNA angeschaut. Leider scheint man dafür Visual Studio 2005 zu brauchen. Ärgerlich, dass ich das erst vor zwei Tagen deinstalliert habe. Ich werde also warten müssen, bis VS 2008 unterstützt wird. Derzeit beschäftige ich mich mit Managed DirectX. Kann ja nicht schaden, wenn XNA so ähnlich ist.

Grüße,
Jack

139 Beiträge seit 2006
vor 16 Jahren

Mir ist inzwischen eingefallen, warum GDI+ so langsam sein könnte. Ich glaube, das liegt daran, dass bei GDI+ keine Arbeit von der Grafikkarte abgenommen wird. Nur eine Vermutung.

Die vermutung stimmt. GDI ist nur Software "rendern"

Gruss Ari
Wer lesen kann ist klar im vorteil!
MSDN
Dein Feund in allen fragen

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo TNDAri

Die vermutung stimmt. GDI ist nur Software "rendern"

Das kann sehr gut sein.
Von wo hast du diese Info?

Im Aero Modus von Vista wird ja DirectX und die Grafikkarte genutzt.
Wieso das eher noch langsamer als das Software Rendering ist, verstehe ich nicht.
Wohlgemerkt: Mit einer Grafikkarte die auf dem aktuellen "Gamer"-Stand ist.

Windows XP arbeitet ja für die GUI nur mit GDI, oder?
Wieso ist die Windows GUI so schnell (Im Verhältniss)? 🙂

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

871 Beiträge seit 2005
vor 16 Jahren

Hallo TNDAri

Die vermutung stimmt. GDI ist nur Software "rendern"

Windows XP arbeitet ja für die GUI nur mit GDI, oder?
Wieso ist die Windows GUI so schnell (Im Verhältniss)? 🙂

GDI ist Hardwarebeschleunigt - zumindest die meisten primitiven Funktionalitäten (auf den meisten Grafikkarten).

Bei GDI+ werden die meisten Rendering Operation in Software ausgeführt und GDI dann nur mehr zum klatschen auf die GUI benutzt.

Grüsse,
Egon

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo Egon

Danke für die Infos.

GDI ist Hardwarebeschleunigt - zumindest die meisten primitiven Funktionalitäten (auf den meisten Grafikkarten).

Eigentlich logisch, wenn kein Treiber für die Grafikkarte installiert
ist, ists auch noch nicht so schnell 🙂

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

139 Beiträge seit 2006
vor 16 Jahren

Oh, hab ich mich falsch ausgedrückt. Meinte GDI+ 😉 GDI is bei mri das gleiche wie GDI+, die WinAPI GDI ist bei mir GDI32
Trotzdem wirste mit GDI nie die geschwindigkeit von DirecctX hin bekommen. Selbst wenns 100% sauber programmiert ist.
GDI würde ich wenns um spiele geht eher für welche nehemn, die nciht auf animationen angewiesen sind. Hab mal Sokoban nach programmiert in GDI+. Dafür ist das vollkommen ausreichent.

Gruss Ari
Wer lesen kann ist klar im vorteil!
MSDN
Dein Feund in allen fragen