Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Grafikprogrammierung (https://www.delphipraxis.net/47055-grafikprogrammierung.html)

PierreB 5. Jun 2005 21:08


Grafikprogrammierung
 
Schönen guten Abend, :hi:

seit längerem hab ich mir schon vorgenommen mir mal die Grafikprogrammierung etwas näher anzugucken.
Hab dein mal ein bissl mit Canvas rumgespielt, ging auch alles sehr gut.
Nur jetzt würde ich gern etwas anspruchsvolleres machen. Hab daher auch schonmal in der DP gesucht und auch einiges gefunden. Nach langem Probieren habe ich es tatsächlich geschafft, DelphiX unter Delphi 3 und Direct3D 8 und Delphi 7 zu installieren. Jetzt habsch ma paar Fragen:

Was is einfacher und für Anfänger besser geeignet ? (DX <> Direct3D)
Welches ist leistungsstärker, bessere Grafik ?

Ist es möglich mit Delphi "richtige" Spiele (z.B. GTA 3 / Vice City) zu programmieren ?
Wenn ja, vielleicht mit DelphiX ? :mrgreen:

Thx

DGL-luke 5. Jun 2005 21:13

Re: Grafikprogrammierung
 
D3D ist eine obermenge von DirectX, wenn ich mich richtig entsinne. in DX ist nämlich auch noch so zeug wie sound, input/output usw. drin.

spiel entwickeln: hey, ich kann jetzt sogar schleichwerbung machen, ohne dass ich irgendwie Offtopic werde: http://www.delphigl.com/forum/viewtopic.php?t=4244

http://www.delphigl.com ist eine homepage, die sich mit grafikprogrammierung(insb. 3d) mit Delphi und OpenGL beschäftigt, der obige Link führt allerdings zu einem thread im forum der page, indem es um einen 2d-shooter geht, der mit delphi und DirectX geschrieben worden ist. bin ich nicht genial? :mrgreen:

ps: vielleicht willst du ja auch gleich was ganz neues anfangen? dann kannst du gleich bei "uns" in DelphiGL bleiben.

PierreB 5. Jun 2005 21:29

Re: Grafikprogrammierung
 
Zitat:

Zitat von DGL-luke
D3D ist eine obermenge von DirectX, wenn ich mich richtig entsinne. in DX ist nämlich auch noch so zeug wie sound, input/output usw. drin.

spiel entwickeln: hey, ich kann jetzt sogar schleichwerbung machen, ohne dass ich irgendwie Offtopic werde: http://www.delphigl.com/forum/viewtopic.php?t=4244

http://www.delphigl.com ist eine homepage, die sich mit grafikprogrammierung(insb. 3d) mit Delphi und OpenGL beschäftigt, der obige Link führt allerdings zu einem thread im forum der page, indem es um einen 2d-shooter geht, der mit delphi und DirectX geschrieben worden ist. bin ich nicht genial? :mrgreen:

ps: vielleicht willst du ja auch gleich was ganz neues anfangen? dann kannst du gleich bei "uns" in DelphiGL bleiben.

Deine Schleichwerbung ist ja ein Projekt das mit Direct3D erstellt wurde. :mrgreen:

Hm, OpenGL, is das denn einfach zu bedienen ? ;)

sniper_w 5. Jun 2005 21:47

Re: Grafikprogrammierung
 
Bitte keine Diskusion jetzt anfangen ala OpenGL <> DX, aber OpenGL ist einfacher zu bedienen. DX hat seine Vorteile aber um die obige Frage zu beantworten, IMHO ist OpenGL leichter zu bedienen. Industriestandard ist es ja auch.

phlux 5. Jun 2005 21:47

Re: Grafikprogrammierung
 
ja, leichter als pure directx programmierung ohne kompos
edit: es ist weniger kryptisch

PierreB 5. Jun 2005 22:33

Re: Grafikprogrammierung
 
Zitat:

ja, leichter als pure directx programmierung ohne kompos
Gibts denn Kompos für DirectX ? Hab jedenfalls keine gefunden...
(Bei Torry gabs nur was für Delphi 5 :? )

Allgemeine Frage: Kann man mit Delphi im Punkt Spieleprogrammierung an C++ herankommen ?

sniper_w 5. Jun 2005 22:42

Re: Grafikprogrammierung
 
Zitat:

Allgemeine Frage: Kann man mit Delphi im Punkt Spieleprogrammierung an C++ herankommen ?
Die Frage brauch einen neuen Thread ;).
Die Antwort: die besten (meisetn) Spielen (alles was von id Stofware kommt, und was daraus abgeleitet wurde, d.h. etwa 80% von Spielen :mrgreen: <- nicht wircklich) sind im C geschrieben.

phlux 6. Jun 2005 06:51

Re: Grafikprogrammierung
 
Zitat:

Zitat von PierreB
Zitat:

ja, leichter als pure directx programmierung ohne kompos
Gibts denn Kompos für DirectX ? Hab jedenfalls keine gefunden...
(Bei Torry gabs nur was für Delphi 5 :? )

Allgemeine Frage: Kann man mit Delphi im Punkt Spieleprogrammierung an C++ herankommen ?

naja es gibt genesis 3d das ist glaub ich ne portierte dx engine für delphi. Guck dir einfach mal GLScene an oder die Seiten von Sulaco

Tubos 6. Jun 2005 15:14

Re: Grafikprogrammierung
 
Zitat:

die besten (meisetn) Spielen sind im C geschrieben.
Heutige Spiele werden in den meisten Fällen in C++ geschrieben. C wird nicht mehr verwendet, weil es kaum einen Grund dafür gibt.
Weil du id-Software ansprichst: das alte Doom wurde in C geschrieben, für Doom 3 wurde aber auf C++ umgestellt.

Zitat:

Ist es möglich mit Delphi "richtige" Spiele (z.B. GTA 3 / Vice City) zu programmieren ?
Ja, es ist theoretisch möglich (weil es bei der Ansteuerung von DirectX oder OpenGL im Prinzip keinen Unterschied macht welche Sprache du verwendest), aber es wird kaum gemacht.
Wieso?
Delphi wurde dafür optimiert schnell Win32-Programme erstellen zu können, und vereinfacht diesen Prozess mit der VCL ganz erheblich. Doch bei der Spieleprogrammierung fallt der Vorteil weg weil man da in den meisten Fällen sowieso keine Windows-GUI hat und deswegen wird es im professionellen Bereich nicht für sowas verwendet.
Delphi ist einfach nicht dafür gemacht Spiele zu schreiben, aber möglich ist es durchaus.

mfg. Tubos

barf00s 6. Jun 2005 15:17

Re: Grafikprogrammierung
 
vllt ist ja auch GLScene (OpenGL Solution for Delphi) was für dich ;)

JasonDX 6. Jun 2005 15:32

Re: Grafikprogrammierung
 
In Delphi kann man kleine Spiele machen. Ich weiß die HP nicht mehr, aber RecWar wurde in Delphi mit DelphiX programmiert.
Jedoch stößt man bei delphi an Grenzen bezüglich Geschwindigkeit wenn man Komponenten benutzt und damit die ganze VCL hinter sich herzieht.
Große Spiele a la GTA3 sind in Delphi eher selten, aber einen GTA1-Klon dürft könnt man auch (relativ) einfach mit DelphiX hinbekommen.
Von DelphiX würde ich dir trotzdem abraten, weil es weniger zukunftssicher ist (afair wird das ja nicht mehr weiterentwickelt), d.h. direkte Ansteuerung deiner API.

Ob DirectX oder OpenGL ist geschmacksache. Einfach beide ausprobieren und schaun, was dir besser gefällt ;)
Ob Delphi oder C++... kommt wie schon gesagt auf die Größe der Applikation draufan. Bei kleinen Projekten dürfte Delphi ganz gut gehen, bei größeren ist C(++) fast Pflicht


PS: Der Thread klingt auch interessant für mich. Ich hoff mal, dasser nicht in nem DX vs. OGl Flamewar untergeht

mael 6. Jun 2005 16:21

Re: Grafikprogrammierung
 
Zitat:

Zitat von Chimaira
Bei kleinen Projekten dürfte Delphi ganz gut gehen, bei größeren ist C(++) fast Pflicht

Bitte auch Gründe angeben, denn so ist das eine fragwürdige Behauptung. Delphi besteht nicht nur aus Komponenten ,sondern auch aus der Sprache Object Pascal, die imo ziemlich sauber und gut zu lesen ist, was gerade bei großen Projekten wichtig ist. Ausführungsgeschwindigkeit ist jedenfalls kein Grund, die Unterschiede sind nicht sehr groß (selbst C# scheint sich hier salonfähig zu werden), auch bei der Nutzung von C/C++ greift man auf Assembler zurück um zeitkritische Teile zu optimieren (mittels SSE, SSE2, MMX).
Hinzu kommt das bei DirectX viel mit Interfaces gearbeitet wird was in Delphi viel einfacher und sauberer (da direkt in der Sprache enthalten) umgesetzt werden kann.

PierreB 6. Jun 2005 16:24

Re: Grafikprogrammierung
 
Moin,

ich hab jetzt mittlerweile mehrere Seiten mit Source, Demos und Tutorials zu DelphiX, DirectX und GlScene gefunden. GlScene hört sich dabei recht interessant an, ma gucken ob ich das unter Delphi 2005 zum laufen bekommen. (http://www.delphipraxis.net/internal...ct.php?t=55591)

P.S.: Ich hab es schon geschafft ein Würfel mit Textur unter DirectX zu erstellen. :-)

phlux 6. Jun 2005 16:50

Re: Grafikprogrammierung
 
Zwar kein Protz 3D, aber von Bei Google suchenAge of Wonders 1 & 2 weiß ich, dass sie auch mit Delphi geschrieben wurden ;)

PierreB 6. Jun 2005 16:55

Re: Grafikprogrammierung
 
Das Problem ist, dass man neben dem Programmieren auch noch Grafiker sein muss. :shock:
Ich hab gelesen, 3ds max soll für Grafiken um sie in GlScene / DirectX zu importieren recht gut sein. Kann das einer bestätigen ?

DGL-luke 6. Jun 2005 16:59

Re: Grafikprogrammierung
 
stimmt, hab ich auch mal wo gehört.
EDIT: das war auf Age of Woders bezogen.

@Schleichwerbung: Die Schleichwerbung war eigentlich der link auf DGL :mrgreen:

@VCL: kann man, muss man aber nicht. es gibt auch ein non-vcl-template für OpenGL bei uns.
und so groß ist der unterschied Delphi<>C++ auch nicht (mehr).

@OpenGL<>DirectX:

pro OGL:
- einfacher zu bedienen durch prozeduralen aufbau
- template laden, zeichencode in die renderschleife, fertig - das wird höchstwahrschienlich das erste OpenGL-Programm sein, das du schreibst.
das ganze wird dann auch ziemlich überschaubar und kapierbar sein.
- aufwärtskompatibilität(alle OpenGL-funktionen, die in deinem programm mit OpenGL-Version 1.5 gehen, werden 100% auch in OpenGL 342.17 funktionieren)
pro DirectX:
- komplette API, sprich inklusive Input/Output, Audio usw.

mehr pro directx weiss ich nicht, da ich mich noch nicht so damit beschäftigt hab.

@Pierre B: der in DGL ansässige 3ds-loader (gl3ds von noeska) hat zur zeit ein paar wehwehchen, der von GLScene soll aber einwandfrei funktionieren. Und 3d Studio Max ist natürlcih das Referenzprogramm für 3ds-dateien, alleien von der dateiendung her schon.

Tubos 6. Jun 2005 17:11

Re: Grafikprogrammierung
 
Zitat:

mehr pro directx weiss ich nicht, da ich mich noch nicht so damit beschäftigt hab.
Viele Zusatzfunktionen, die dir die Arbeit mit 3D-Grafik wesentlich erleichtern. Das Laden von Objekten, unzählige mathematische Funktionen und sogar Dinge wie 3D-Animation sind mit DirectX bzw. genauer den Direct3D Extensions (D3DX) ganz leicht möglich. In OpenGL musst du dir das alles selbst schreiben oder eine externe Bibliothek verwenden, was den Nachteil hat dass du dich in eine andere API reinarbeiten musst.
Das heißt also, dass OpenGL zwar am Anfang viel einfacher ist, dafür ist später alles komplizierter.

Zitat:

Ich hab gelesen, 3ds max soll für Grafiken um sie in GlScene / DirectX zu importieren recht gut sein. Kann das einer bestätigen ?
"Zum Importieren" sind alle guten Programme geeignet.
Wenn du mit dieser Frage meinst ob 3ds max ein guter 3D-Modeller ist: ja, zweifellos. Wurde auch für zahlreiche Computerspiele verwendet (Siehe hier). Eventuell ist aber 3ds max für ein Computerspiel am Anfang Overkill. Die Frage nach einem geeigneten 3D-Modeller kann dir die DP-Forumssuche beantworten, das wurde schon mehrmals diskutiert.

Zitat:

Jedoch stößt man bei delphi an Grenzen bezüglich Geschwindigkeit wenn man Komponenten benutzt und damit die ganze VCL hinter sich herzieht.
Achja, ich hab ganz vergessen dass man die VCL nicht nur für die GUI an sich verwenden kann ;)
Bei einem Spiel sollte es selbverständlich sein alles zumindest ein wenig zu optimieren. Da gehört eben dazu dass man die VCL nicht verwendet.

Phoenix 6. Jun 2005 17:27

Re: Grafikprogrammierung
 
Zitat:

Zitat von DGL-luke
pro OGL:
- einfacher zu bedienen durch prozeduralen aufbau
- template laden, zeichencode in die renderschleife, fertig - das wird höchstwahrschienlich das erste OpenGL-Programm sein, das du schreibst.
das ganze wird dann auch ziemlich überschaubar und kapierbar sein.
- aufwärtskompatibilität(alle OpenGL-funktionen, die in deinem programm mit OpenGL-Version 1.5 gehen, werden 100% auch in OpenGL 342.17 funktionieren)
pro DirectX:
- komplette API, sprich inklusive Input/Output, Audio usw.

Nunja. Ich verweise hier an der Stelle gerne auf managed DirectX: Man hat ein schönes Objektorientiertes Interface was einem fast alle Arbeit abnimmt. Dann natürlich die Performance nicht zu vergessen: Du kannst mit DirectX einfach alle Effekte verwenden. In OpenGL musst Du erst jedesmal abprüfen, ob ein Effekt unterstützt wird und wenn nicht drumrum programmieren. In DirectX verwendest Du ihn einfach: Wenn es ihn nicht gibt, dann wird er entweder per Software emuliert (kostet freilich wieder Rechenzeit) oder er wird nicht angewendet (optional einstellbar). Somit geht prinzipiell erstmal alles. Was OpenGL betrifft ist das deutlich umständlicher und Zeitaufwändiger in der Entwicklung.

Aber was OpenGL <> DirectX angeht: Schau Dir einfach mal an, welche der aktuellen guten Spiele OpenGL und welche DirectX verwenden, und wie das Verhältnis hier ist. Daran ist schon zu erkennen, welche Basis Dir mehr Vorteile bietet.

PierreB 6. Jun 2005 17:28

Re: Grafikprogrammierung
 
Zitat:

In OpenGL musst du dir das alles selbst schreiben
Heißt das man muss z.B. für eine simple 3D Animation sich durch hunderte Prozeduren wälzen und alles selber schreiben ???

DGL-luke 6. Jun 2005 17:36

Re: Grafikprogrammierung
 
du wirst es selbst animieren müssen.

da ich jetzt aber keine zeit hab: http://www.delphigl.com/forum - da gibts 606 tolle typen, von denen ungefähr 30 richtig ahnung haben und dir gerne weiterhelfen.

PierreB 6. Jun 2005 17:39

Re: Grafikprogrammierung
 
Zitat:

du wirst es selbst animieren müssen.
Dann sollte ich vielleicht leiber bei DirectX bleiben. :mrgreen:

turboPASCAL 6. Jun 2005 18:06

Re: Grafikprogrammierung
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi, habe schon eine Prog. mit GLScene gemacht und finde es ist ein feines Teil.

GLScene läuft auch unter D2005 (ich habe dazu die Delphi 7 Kompon. benutzt).

3DEngie, Sound, Animation, Effekte...

DirectX war mir zu viel Tipperei um mal schnell ne' 3D Anwendung auf den Bildschirm zu zaubern.
Leider hab gibt es noch den Nachteil das 3DS-Dateien nicht animiert Dargestellt werden,
dafür aber Formate wie md2, md3, smd...

Um 3D-Modelle zu erstellen eignet sich gut der kleine Bruder GMax (ca. 20 MB / 0,00 €) von
3ds Max (ca. 500 MB / 2.784,00 €).


Ein Demo / Beispiel hahe ich mal hier Angehangen.

maximus Caesar 6. Jun 2005 18:07

Re: Grafikprogrammierung
 
Also, GLScene packt das *.3ds Format, und das is in 3D max integriert (kommtglaub ich auch von denen) ob es noch mehr Formate gibt, die kompatibel sind weis ich nicht. Hab GLScene grad erst installiert.

Bei GMax bin ich mir nicht sihcer ob de damit in ein kompatibles Format speichern kannst...

Khabarakh 6. Jun 2005 18:35

Re: Grafikprogrammierung
 
Code:
Which 3D Mesh formats are supported?

      The following formats are currently supported:
          o 3DS (3DStudio, and many others)
          o MD2, MD3 (Quake2/3, animated)
          o OBJ (WaveFront, and many others)
          o SMD (Half-Life, skeletal animation, obtained from a decompiled MDL, f.i. with MilkShape)
          o NMF (Normal Mapper File, ATI tool)
          o GTS (GNU Triangulated Surface)
          o GL2 (Ghoul2, aka MDX)
          o OCT (FSRad)
Warum nicht Blender? Open Source, unterstützt mindestens 3ds und obj und im Modelling wirklich eines der besten Programme.

PierreB 6. Jun 2005 21:17

Re: Grafikprogrammierung
 
Zitat:

Warum nicht Blender? Open Source, unterstützt mindestens 3ds und obj und im Modelling wirklich eines der besten Programme.
Ich möchte jetzt hier keine 3D-Programm-Diskussion losbrechen, aber Blender 3D ist mir zu undurchsichtig und unnötig kompliziert (imho). Aber GMax scheint wirklich brauchbar zu sein. :thumb:

Lohnt es sich eigentlich noch mit DirectX 8 zu programmieren oder sollte man gleich DirectX 9 nehmen?
Ich hab bis jetzt nämlich nur DirectX 8 für Delphi gefunden... :gruebel:

sniper_w 6. Jun 2005 22:52

Re: Grafikprogrammierung
 
Zitat:

Heutige Spiele werden in den meisten Fällen in C++ geschrieben. C wird nicht mehr verwendet, weil es kaum einen Grund dafür gibt.
Weil du id-Software ansprichst: das alte Doom wurde in C geschrieben, für Doom 3 wurde aber auf C++ umgestellt.
Es fällt mir sehr schwer zu glauben dass J.Carmack sich von C getrennt hat ;). Woher weisst du dass Doom3 in c++ geschrieben ist?
Und ja es gibt ein sehr grosses Bedarf in C zu programmieren.
( nexiuz ist auf C ;), ist seit etwa eine Woche zu haben )

barf00s 7. Jun 2005 08:03

Re: Grafikprogrammierung
 
Zitat:

Zitat von turboPASCAL
Um 3D-Modelle zu erstellen eignet sich gut der kleine Bruder GMax (ca. 20 MB / 0,00 €) von
3ds Max (ca. 500 MB / 2.784,00 €).

Der "Anim8or" ist 4free

PierreB 7. Jun 2005 10:02

Re: Grafikprogrammierung
 
Also ich hab mich jetzt entschlossen doch bei DirectX zu bleiben. Wer mir wohl ein Buch kaufen und mal gucken was ich so hinbekomme.

Vielen Dank für eure Antworten :hi:

Phobeus 8. Jun 2005 13:57

Re: Grafikprogrammierung
 
In diesem Thread ballt sich eine ganze gefährliche Ladung von Halbwissen an... jeder der sich wirklich mit dem Thema befassen will, sollte einmal die Suchfunktion verwenden. Da gab es schon weitaus gelungenere Thread zum Thema ;)
@Blender: Blender ist eine sehr schöne Wahl. Warum niemand das Blender-Format unterstützt wird häufig mißverstanden. Wer sich das Dateiformat anschaut, wird auch begreifen, warum dies so ist. Das Blender-Format ist von seiner Architektur, auf und abwärtskompatibel und primär auf die Speicherung von 3D-Szenen ausgerichtet (ähnlich wie 3ds auch). Beide Format sind zumindest für die professionelle Spieleentwicklung nicht zu gebrauchen, da sehr viele "Altlast" mit rumgeschleppt wird. Stattdessen würde man dort versuchen ein eigenes Dateiformat zu schreiben. Das Milkshape-Format ist ein sehr schönes Beispiel dafür. Eine Zahl wird geschrieben in der steht wie viele Vertices folgen und danach werden diese dann binär hintereinander runtergeschrieben. Eine Zahl für die Tex-Coords und runtergeschrieben ... dann folgen Bones & Materials und was man sonst so alles noch gebrauchen könnte.
An dieser Stelle trumpft Blender nämlich auf, da es die sehr simple Skript-Sprache Python unterstützt und es somit leicht möglich ist aus einer Blender-Szene in sein eigenes Format zu exportieren. Sicherlich wird es auch zahlreiche gute Möglichkeiten geben um dies in 3DS Max zu machen, schaut man sich den Preis der Beiden an sollte die Entscheidung sofort gefallen sein. Zudem ist Blender nicht kompliziert... es ist anders. Den Hand aufs Herz: Wer glaubt ein 3D-Modellierer dieser größenordnung zu beherrschen ohne sich aus der Bücherei einmal ein Buch dazu auszuleihen oder reihenweise Tutorials abzuarbeiten, sollte das Thema lieber liegen lassen.
Dies nur noch einmal aus Erklärung warum das "Blender-Format" nirgends unterstützt wird.... es ist halt (wie jedes) 3D-Szenen-Format nicht dafür gedacht um auf den schnellsten Weg Vertices so zu ordnen, dass geschwind in den RAM der GK gelangt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz