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

1

14.08.2015, 22:41

Fragen zur Entwicklung einer Grafikengine

Hallo Leute,

ich bin neu hier im Forum, da ich mich für die Spieleprogrammierung interessiere. Nun habe ich mich auch schon ein bisschen informiert und würde gerne eine kleine Engine selber schreiben. Diese soll für Lernzwecke sein, da mich die Grundkonzepte dahinter interssieren (so LowLevel wie möglioch :thumbsup: ).

Bei meinen Recherchen habe ich zwei Grundansätze gefunden:
1) Die Pixel einzeln berechnen und dann per BitMap über das Betriebssystem zeichnen lassen.
2) OpenGL/DirectX.

Was mir auch klar ist, ist das OpenGL/DirectX deutlich schneller sind. Hier ist aber auch meine Frage: Warum ist das so, denn eigentlich müssten die beiden doch auch alle Pixel berrechen. Klärt mich bitte auf ...

Liebe Grüsse
Eggi

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dageggi« (23.08.2015, 17:24)


Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

2

14.08.2015, 23:09

Einfach gesagt: Die erste Methode lässt die Pixel von deiner CPU berechnen. Die ist allerdings nicht sonderlich gut darin, weil sie eher für andere Aufgaben spezialisiert ist.
Die zweite Methode gibt die Aufgabe an die GPU ab. Diese ist extrem gut auf diese Aufgabe ausgelegt und berechnet tausende Pixel gleichzeitig.

Berechnet werde in der Tat alle Pixel, bei beiden Methoden. Allerdings kann die GPU dies viel, viel, viel schneller als die CPU.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

14.08.2015, 23:12

Willkommen im Forum.
Guck dir vielleicht mal folgendes an:
http://www.geometrian.com/programming/tu…gines/index.php
Du darfst natürlich machen was du willst aber guck es dir vielleicht wenigstens mal an.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

4

14.08.2015, 23:34

Wow, hier gibt es ja echt schnell ne Antwort 8o Erstmal Danke an euch beide.

@Nimelrian: Der Unterschied ist ja sehr simpel (aber effektiv). Gibt es denn auch die Möglichkeit mit dem OS auf die GPU zu zugreifen?

@Schorsch: Deinen Link habe ich mir angeguckt und verstehe auch das Anliegen des Textes. Bei mir ist aber nicht wirklich (zumindest jetzt) das Interesse da, ein Spiel zu entwickeln. Mir geht es eher darum die Grubdlagen zu verstehen. Wenn ich mich dann später dafür entscheide doch ein Spiel zu machen könnte ich dann meine Engine verwenden. Und das sogar bei mehreren verschiedenen Projekten. Außerdem kann ich verschiedenste Sachen einfach mal ausprobieren, die bei einem festgelegten Spiel keinen sinn/Zweck hätten. Und wie gesagt, es geht ums Lernen/Probieren/Spass haben, nicht darum einen professionelle/kommerzielle/... Engine zu entwickeln.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

15.08.2015, 03:03

Gibt es denn auch die Möglichkeit mit dem OS auf die GPU zu zugreifen?

Ja, mit OpenGL bzw. Direct3D ;)

OpenGL/Direct3D ist die Schnittstelle des OS um auf die GPU zuzugreifen...

Und den Link von Schorsch solltest du dir unbedingt zu Herzen nehmen! ;)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (15.08.2015, 03:09)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

15.08.2015, 08:23

Du weißt ja eben gar nicht was eine Engine wirklich braucht und wie du sie aufbauen musst damit du selbst sinnvoll damit arbeiten kannst. Schreib doch einfach ein Spiel mit DirectX. Da machst du dann im Prinzip die selben Dinge wie bei deiner Engine, nur dass du die Sachen die du implementierst eben direkt für aufkommende Probleme entwickelst. Den Code allgemeineren Code kannst du dann hinterher immer noch auslagern und Engine drauf schreiben.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

7

15.08.2015, 13:55

Hallo,

Erstmal Danke an alle die hier geantwortet haben, die Frage hat sich damit geklärt.

Nun nochmal zu dem Thema der Engine: Wie gesagt werde ich eine Engine machen, damit ich einfach die verschiedensten Sachen mal probieren kann. Die kann ich dann immernocj auf Spiele anwenden, allerdings habe ich auf Spiele erstmal keine Lust, sondern auf die Grundlagen die da hinter stecken.
Ich bin euch für den Rat dankbar, habe mir das mit der Engine aber gut überlegt und werde auch dabei bleiben.

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

8

22.08.2015, 19:29

Zuerst einmal: Ich versuche auch diesen Low-Level-Weg zu gehen... Du brauchst ne Menge Zeit, Konzentration, Motivation und Frustrationstoleranz. Mehr, als du das von anderen Programmierern vielleicht gewohnt bist. Du wirst fiesere und schlechter auffindbare Fehler bekommen, als ein "normaler" Anwendungsprogrammierer oder einer der eine fertige Engine hat. Denn Hardware (der du sehr viel näher kommen wirst) ist was ganz anderes als Software. Ich will dich damit nicht von deiner Idee abbringen (wird wahrscheinlich eh nich klappen), aber vielleicht eine ungefähre Höhenangabe zu dem Berg geben, vor dem du stehst. ;)

Besorg dir doch ein Buch, wo eine Engine auf DX Basis entwickelt wird. Wenn du kein hochaktuelles brauchst, dann kauf dir David's DirectX Buch. Da wird ziemlich gut erklärt, wie die Mathematik (davon wirst du sehr viel brauchen) für 2D/3D Grafik funktioniert und wie so eine Engine aufgebaut sein könnte. Aktueller ist's vielleicht hier.

Ich würde dir DirectX empfehlen, denn das ist noch näher an der Hardware und der Mathematik orientiert als OpenGL. So zumindest mein Eindruck! Fang mit DX11 an und mach mit DX12 weiter - dann hast du eine der (oder DIE) krassesten Low-Level-Tiefen, die du dir vorstellen kannst. Ob du das natürlich durchziehen kannst und willst, das kann ich dir bei dieser Empfehlung nicht versprechen!

Was du für Low-Level-Engineprogrammierung mit DX brauchen wirst ist C++ und HLSL (High-Level-Shading-Language). Ersteres ist für die Sprache für die CPU und letzteres die für die GPU. Aus deinem Post wird nicht so klar, ob du C++ kannst... Wenn das nicht der Fall sein sollte, empfehle ich dir dringend, erstmal C++ zu lernen, sonst verstehst du von den DirectX11 Aufrufen nichts bzw. musst alles nochmal aufarbeiten, wenn du C++ einigermaßen beherrschst.

Ich hoffe ich konnte dir ein paar Denkanstöße und Empfehlungen geben, die dich weiterbringen! Bei weiteren: Schreib sie hier in den Thread, ist ein sehr interessantes Thema!

EDIT: Wenn das möglich ist, dann würde ich den Threadtitel zu "Low-Level Engine selber programmieren - wie fange ich an?" oder so ändern. Der Bezug zu OpenGL "schreckt" alle DX Programmierer ab, doch die werden bei der Fragestellung eher benötigt, wie ich finde.
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

9

22.08.2015, 19:51

Inwiefern ist Dx näher an der Hardware?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

22.08.2015, 20:46

D3D war anfangs im Vergleich zu OpenGL ein wenig mehr low-level angesiedelt, zwischen modernem D3D und modernem OpenGL besteht da mittlerweile aber praktisch kein Unterschied; was "die Mathematik" betrifft gab es nie einen Unterschied...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (22.08.2015, 20:54)


Werbeanzeige

Ähnliche Themen