Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

21

21.02.2012, 12:52

zu den von dir gennanten Funktionen frag ich mich auch:
Wo zum Täufel brauch ich sowas? Ehrlich gesagt denke ich auch, dass du das bisher genause wenig gebraucht hast.

Für meinen Space-Shooter, wenn ich normalmapped Lighting von anti-aliased pre-rendered Images machen will bei sich überlappenden Objekten wäre das an den teiltransparenten Kanten sogar sehr sehr vorteilhaft (also man stelle sich einen normalen Space-Shooter mit pre-rendered Images vor, welche anti-aliased sind und versuche nun mit Normalmaps diese zu beleuchten - das geht solange gut, wie sich verschiedene Objekte nicht überschneiden und mehrere Pixel teiltransparent beleuchtet werden müssten). Leider geht das nich. Weder hat meine Karte Compute-Shader, noch gibt meine GL-Version das irgendwie her.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

22

21.02.2012, 13:58

RE: DirectX oder OpenGL?

Zitat

Nein kann es nicht. Genaueres siehe z.B. der verlinkte Artikel. Ansonsten überleg dir einfach mal kurz, wie du z.B. sowas umsetzen würdest. ;)

Mich würde mal intressieren wie du sowas in DirectX umsetzten willst.

Die verlinkten Slides beschreiben doch genau, wie sowas in Direct3D 11 umgesetzt werden kann!?

Und, es gibt immer Spezialfälle bei denen ein Ersetzen mit einer änlichen Technik nur schwer bis überhaupt nicht gelingt. ;)

Es geht hier aber nicht um irgendwelche hochspeziellen Techniken, sondern um ein auf modernen GPUs essentielles Feature. Diese eine Technik war nur ein Beispiel dafür, was man damit machen kann.

zu den von dir gennanten Funktionen frag ich mich auch:
Wo zum Täufel brauch ich sowas? Ehrlich gesagt denke ich auch, dass du das bisher genause wenig gebraucht hast.

Nur weil du es nicht brauchst, heißt das noch lange nicht dass man es nicht braucht. Ich brauch es z.B. oft. Gerade vor ein paar Wochen hätte ich es mal wieder in einem OpenGL Projekt gebraucht, nur um festzustellen dass es immer noch keinen Weg gibt (von herstellerspezifischen Extensions abgesehen). Ich hab leider vergessen wofür genau ich es da einsetzen wollte, aber meistens brauch ich's in Zusammenhang mit Instancing (ja ich weiß dass "normales" Instancing in OpenGL geht, aber das ist wie gesagt kein Ersatz).

Wie du selbst schon festgestellt hast, existieren Extensions, die die Funktionen auch auf OpenGL zur Verfügung stellen. Bei DirectX darfst du die Funktionen genauso wenig voraussetzen.

Eben doch.
Wenn ich in OpenGL die Extensions benutzen wollte, dann müsste ich mindestens drei oder vier getrennte Renderpfade schreiben. Einen für NVIDIA, einen für ATI, einen für Intel und einen Fallback. Das war sogar mir dann bisher ehrlich gesagt immer zuviel Arbeit.

Zummindest dieses Random Memory Access ist daher für mich unintressant, da es auf meinen Computer sowieso nicht läuft.

Na das ist natürlich ein Argument :rolleyes:

Zitat

Wenn ich einen Renderer für eine Anwendung schreibe, dann ist das bei mir eine anwendungsspezifische Abstraktion und kein Adapter.

Stimmt natürlich.
Wenn du aber einen Renderer für unterschiedliche Grafik API schreibst, muss er Codeteile enthalten die wie ein Wrapper fungieren.

Nein. Meiner Erfahrung nach ist es sinnlos eine API wie OpenGL oder Direct3D zu wrappen, denn die Unterschiede zwischen den APIs sind zu groß als dass man sie auf einen vernünftigen gemeinsamen Nenner bringen könnte.
Ich würde den ganzen Renderer einmal mit OpenGL und einmal mit Direct3D implementieren.

Zitat

Das ist aber imo weder gut noch sinnvoll. Denn damit kann ich nun sowas machen:

Das ist aber nicht die Schuld von OpenGL sondern vom Programmierer.
Auch OpenGL schützt vor Torheit nicht. ;)
Verantwortungsvolles Programmieren sollte man bei OpenGL und DirectX beherschen.

Schön das wir uns das einig sind. Nur frag ich mich jetzt, wieso du dann die Tatsache dass du mit Direct3D ein Resource Leak bauen kannst als Argument gegen Direct3D bringst!?

Zitat

Ich empfehle sehr, bei Artikeln die sowas behaupten das Datum zu beachten. Das übliche Argument warum OpenGL angeblich schneller sein soll

Zitat aus Wikipedia:

Zitat

Draw Call-Kosten sind niedriger als in Direct3D, was zu einer besseren Performance führt.

Tja, wieder mal so ein Fall von wegen glauben was man liest. Ich hab aber grad weder Zeit noch Lust einen Benchmark zu schreiben. So nötig hab ich's dann auch nicht hier irgendwas zu beweisen. Wenn du's mir nicht glauben willst, was ich durchaus vernünftig find', dann schlage ich vor, Wikipedia auch nicht einfach zu glauben, sondern dich selbst zu überzeugen.
(btw: Die englische Wikipedia hat mehr dazu zu sagen ;) )

Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »dot« (21.02.2012, 14:25)


  • »Spiele Programmierer« ist der Autor dieses Themas

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

23

21.02.2012, 16:44

Zitat

Nur weil du es nicht brauchst, heißt das noch lange nicht dass man es nicht braucht.

Ich wähle meine lieblings API nicht nach irgendwelchen Features aus, die noch dazu auf meinen Computer gar nicht laufen.
In der Praxis verwende ich nichtmal Shader, wenn möglich, da mein Programm sonst kaum wo läuft. (Meine Erfahrung)

Ich kann auch sagen: OpenGL ist besser weils auch auf den BlueGen Computer garantiert fehlerfrei läuft.
Was nützt mir das dann? Nichts? Richtig!

OpenGL beherscht alles was ich brauche. Wenn ich in fünf Jahren einen neuen Computer habe, der das dann kann, hat auch OpenGL nachgerüstet.

Zitat

Wenn ich in OpenGL die Extensions benutzen wollte, dann müsste ich mindestens drei oder vier getrennte Renderpfade schreiben. Einen für NVIDIA, einen für ATI, einen für Intel und einen Fallback. Das war sogar mir dann bisher ehrlich gesagt immer zuviel Arbeit.

Volle Zustimmung.
Ist nicht so toll.
Aber besser über Extensions, als gar nicht.

Zitat

Schön das wir uns das einig sind. Nur frag ich mich jetzt, wieso du dann die Tatsache dass du mit Direct3D ein Resource Leak bauen kannst als Argument gegen Direct3D bringst!?

Ich komme mit OpenGL klar.
Mit DirectXs Speichermanagment allerdings nicht.

Jetzt überleg mal welche API ich wohl lieber benutzen werde.

Zitat

Die englische Wikipedia hat mehr dazu zu sagen

Werd ich mir bei Gelegenheit durchlesen.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Spiele Programmierer« (21.02.2012, 16:55)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

21.02.2012, 17:42

Ich hab das Gefühl wir reden hier mittlerweile ein wenig aneinander vorbei.
Mir gings eigentlich darum, zu erläutern warum ich unter Windows zu Direct3D rate. Und nachdem du einige, wie ich denke, objektiv widerlegbare Behauptungen über Direct3D aufgestellt hast, wollte ich das einfach nicht so stehen lassen.
Was du persönlich lieber benutzt, ist rein deine Entscheidung und mir ehrlich gesagt völlig egal. Ich hab keinen Grund es dir ausreden zu wollen und das war hier auch nicht mein Ziel ;)

Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »dot« (21.02.2012, 18:19)


  • »Spiele Programmierer« ist der Autor dieses Themas

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

25

21.02.2012, 19:44

Zitat

egal. Ich hab keinen Grund es dir ausreden zu wollen und das war hier auch nicht mein Ziel

Da bin ich ja froh. :)

Ich meinerseits wollte ledeglich dem Themenersteller sagen, das ich OpenGL bevorzuge, nachdem du dich gleich damit gemeldet hast, dass DirectX besser ist.

Ich würde auch sagen, das wir jetzt besser das Thema beenden. ;)
Die Diskussion führt schliesslich zu nichts.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

26

21.02.2012, 20:30

nachdem du dich gleich damit gemeldet hast, dass DirectX besser ist.


Objektiv betrachtet ist das ja auch der Fall.
@D13_Dreinig

  • »Spiele Programmierer« ist der Autor dieses Themas

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

27

21.02.2012, 21:08

Zitat

Objektiv betrachtet ist das ja auch der Fall.

:dash: :grumble: :fie:

Das kann man so allgemein nicht sagen.
Es gibt eben auch ein paar Dinge die bei OpenGL besser sind.

Das offensichtlichste Argument ist eben das mit der Platformunabhänigkeit.

Aber ich halt jetzt meinen Mund. ;)
Wers nicht glauben will, der ist selber schuld.

28

21.02.2012, 21:27

DirectX ist eine API, keine Engine. Das ist mit OpenGL eigentlich nicht unbedingt vergleichbar.
Außerdem gibt es genug Diskussionen darüber im Netz. :rolleyes:
Nimm das was du nun willst. Bei DirectX hast du halt Sound, Input etc.pp. dabei, was du bei OpenGL nicht hast. Das musst du dann mit anderen Engines, SFML als Beispiel ist da durchaus sehr gut möglich, machen.

MfG
Check

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

29

21.02.2012, 21:44

DirectX ist eine API, keine Engine. Das ist mit OpenGL eigentlich nicht unbedingt vergleichbar.


Oh man check...
Ich glaube jedem außer dir hier ist klar, dass hier Direct3D und OpenGL verglichen werden (Was beides keine "Engines" sind)...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

30

22.02.2012, 07:45

Das kann man so allgemein nicht sagen.
Es gibt eben auch ein paar Dinge die bei OpenGL besser sind.

Das offensichtlichste Argument ist eben das mit der Platformunabhänigkeit.


Naja, das ist eben auch das einzige Argument... Es hat schon einen Grund warum Spiele unter Windows zu quasi 99% DirectX und nicht OpenGL verwenden.
@D13_Dreinig

Werbeanzeige