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

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

11

22.08.2015, 21:44

OK, ich mag mich vielleicht zu wenig damit befasst haben, was der mathematische Unterschied ist... Meine Erfahrung ist die, dass alle Bekannten (5), die mit OpenGL programmieren nicht so sehr die Ahnung von Matrizen und Vektoren haben, wie die DX Programmierer (4), die ich kenne. Liegt vielleicht aber auch an anderen Dingen - war ne gewagte aussage - ich gebs zu! ;)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

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

12

23.08.2015, 17:31

Hallo,

@CeDoMain: Vielen Dank für deine ausführliche Antwort, den Titel habe ich mal angepasst. Wegen Büchern schaue ich mich mal um. C++ beherrsche ich, die andere Sprache leider noch nicht, aber das sollte ich schaffen.

Jetzt habe ich aber nochmal ne andere Frage. DirectX ist ja nur für Windows. Die UnrealEngine baut auf eigenen Aussagen auch darauf auf, ist aber relativ plattformunabhängig. Wie geht das, denn auch ich möchte gerne mehrere Plattformen ansprechen. Vor allem wundert mich, dass zum Beispiel Android ja noch nichtmal C++ unterstützten. Ist die gesamte Engine dann nochmal in Java geschrieben, oder gibt es da irgendwelche anderen Möglichkeiten?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

13

23.08.2015, 18:23

Android unterstützt C++ (NDK). OpenGL ist immer im Grafiktreiber umgesetzt. Was dort gemacht wird ist eine Schnittstelle zu Java (Java ruft dann die C Funktionen auf).
Dx ist Microsoft only. Wenn du cross plattform willst nimm einfach nur OpenGL. Die UnrealEngine kann auf beiden APIs rendern und abstrahiert den Kram dafür weg (dem Entwickler kann es bis zu einem gewissem Grad egal sein welche API genutzt wird).

14

23.08.2015, 18:57

Ok, eine Frage habe ich noch: damit man eine gute Übersicht hat und leicht anpassen kann, würde ich das ganze gerne auf Klassen/Funktionen aufteilen. Gibt es merkbare/relevante Einschränkungen bei der Performance, je mehr Klassen man verwendet. Ich denke mal das die Performance darunter leidet, aber ich vermute mal nicht das es bei einer normalen Anzahl an Klassen spürbar ist. Kenne mich aber nicht so gut aus.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

15

23.08.2015, 19:41

Geh mal nicht davon aus dass da allgemein was brauchbares bei rum kommt. Und natürlich haben Klassen einen gewissen Overhead aber das ist in Ordnung. Überleg mal wie stressig es wäre komplett ohne Klassen und vor allem komplett ohne Funktionen auszukommen. Es wäre übrigens immer noch sinnvoll zuerst mit einer fertigen Engine zu arbeiten. Du scheinst weder viel Erfahrung mit C++ zu haben noch zu wissen wie Engines normal aufgebaut sind. Wenn du jetzt schon fragst ob du das ganze in Klassen einteilen möchtest, wo willst du mit der ganzen Sache denn dann anfangen und wie willst du überhaupt voran kommen.
„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.“

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

16

23.08.2015, 19:46

Das wichtigste fürs Rendern sind Zustandswechsel zu vermeiden.
Dazu bietet es ich z.B. an ähnliche Objekte hintereinander zu rendern, so dass z.B. der Shader und Buffer nur einmal gebunden werden müssen. Und/Oder man sortiert nach Textur, Shader, ... um wechsel zu vermeiden.
Allgemein würde ich sagen hilft es möglichst ähnliche Daten immer in einem Rutsch zu verarbeiten.

So grundlegend ist Performance aber tatsächlich erstmal egal, vor allem für Hobbyprojekte. Sie zu dass du verstehst wie man dort hinkommt, dann kannst du immer noch verbessern.
Ohne das entsprechende Verständnis und es einmal ausprobiert zu haben kann man keine Engine designen.

Btw. ist es sinnvoller eine fertige zu nehmen wenn du Spiele schreiben willst. Aber wenn du Spaß daran hast, auch wenn vielleicht nie ein Spiel damit umgesetzt wird, warum nicht. Lernen wirst du auf jeden Fall eine Menge.

Werbeanzeige

Ähnliche Themen