Was benötigt eine brauchbare 3D-Grafik-Engine?
-
OOP-Mäßig zähle ich hier Klassen auf die vorkommen könnten und welche die müssen. Was findet ihr fehlt eurer Meinung? Was gehört unbedingt noch dazu? Die Engine soll auf DX9 basieren.
Engine : static Gibt Interfaces zu verschiedenen Teilen der Engine zurück. Enumeration : static Gibt Informationen zu am System verfügbaren Adaptern zurück. Mit den erhaltenen Daten kann man ein Adapter-Interface von Engine holen. Adapter Verwaltet einen Grafikadapter. Hier lassen sich Rendering-States setzen und auslesen und eine Rendering-List rendern. Rendering-List Eine Liste von renderbaren Objekten. Mesh Ein fertiges Objekt (im Sinne von DX9 also Vertices + Faces + Textur + Material), kann direkt aus verschiedenen File-Formaten (vorerst einmal nur aus *.x-Files) ausgelesen werden. SelfMadeMesh Wie Mesh oben nur kann man Textur, Material, etc. einzeln festlegen. Also genauer spezifizieren. Mesh selbst soll nur fertige Files auslesen können und keinen Zugriff auf Daten bieten. BasicPolynom Wie SelfMadeMesh nur kann man hier selbst Vertices und Faces angeben. Totaler Zugriff auf Daten. Effect Ein Effekt, kann direkt aus einem DX9-Effect-File ausgelesen werden. Eventuell noch ein Wrapper rund um DX9-Effect-Files. Light Verwaltet eine (Punkt) Lichtquelle, das Umgebungslicht wird bereits im Render als State eingebaut. Text Speicher Text + dazugehöriger Font (ebenfalls ein renderable object). Controls [Singleton] Verwaltet Tastatur und Maus (keine Joystick-Unterstützung) und zwar highlevelig. Man registriert beim Interface eine Aktion (eventuell Funktionspointer?) + dazugehörige Tastatur- und Maustasten die diese Aktion auslösen. Sound [Singleton] Verwaltet die Soundausgabe. Ebenfalls durch ein Aktionssystem. Man registriert Soundaktionen die man diesmal allerdings selbst starten muss. Microphone [Singelton] Verwaltet ein Mikrofon oder sonstiges Aufnahmegerät. NetworkServer Verwaltet einen Server für eine Netzwerkverbindung. Das Protokoll wird vom Engine-User festgelegt. NetworkClient Verwaltet einen Client, connected über DirectPlay zu einem Server. Protokoll wird vom Engine-User festgelegt.
So das waren meine ersten Gedanken. Da man mir sagte "Wenn du wirklich weiter kommen willst mit DX dann programmiere deine eigene kleine Engine" beginne ich nun mal mit einem Konzept. Habe mir bereits auch andere Sources angesehen (Irrlicht, Revolution3D, etc.) und bin zu dem Entschluss gekommen es tatsächlich zu versuchen. Ob ich jemals fertig werde ist eine andere Sache
Aber wieder zurück zum Thema. Was fehlt eurer Meinung nach? Was ist falsch gemacht bzw. würdet ihr anders designen? Habt ihr eine ganz andere Idee?
Einschub: Wo finde ich Infos zu Shadern? Lassen sie dich ohne Kopfschmerzen auch als Effekt betrachten?
Hat jemand bereits Erfahrungen mit einer eigenen kleinen Engine?
MfG SideWinder
-
Shader wäre noch etwas gutes...
Ich hab einmal ein Shadertutorial gesehen, leider nur für OpenGL
-
Das Thema interessiert mich auch _sehr_
!
SideWinder schrieb:
Einschub: Wo finde ich Infos zu Shadern? Lassen sie dich ohne Kopfschmerzen auch als Effekt betrachten?
ATI und nVidia bieten SDKs für ihre Grafikkarten an. Da gibts auch ne Menge Infos zu shadern. Ausserdem kannst du dir bei ATI RenderMonkey runterladen. Damit kann man recht komfortabel mit shadern rumspielen. Die Beispieldateien sind auch _extrem_ geil!
-
Hier wird eine 3D Engine vorgestellt.
Dort sind die wichtigsten Teile die in einer Engine vorkommen aufgelistet.
http://www.scherfgen-software.net/index.php?action=book&subsite=tribaseDiese wird mit dem Buch geliefert. Die kannst du auch jederzeit abändern.
MFG, Sigi
-
Was fehlt bei der Engine? Na alles was du noch brauchst. Wer soll den vorschreiben, das eine Engine unbedingt KI, Physik und Netzwerk enthalten muss? Jeder nach seinen Bedürfnissen...
Bye, TGGC \-/
-
Okay andere Frage: Fehlt außer Shadern noch ein anderer Grafikeffekt den man dringend benötigt um ein halbwegs brauchbares 3D-Spiel zu erstellen?
MfG SideWinder
-
SideWinder schrieb:
Okay andere Frage: Fehlt außer Shadern noch ein anderer Grafikeffekt den man dringend benötigt um ein halbwegs brauchbares 3D-Spiel zu erstellen?
Echt armselig!
Wieder tausend Effekte... und tatüütada...
Und ich muß mich dann sicher wieder fragen: "Wo ist das Spiel??"
-
wenn dus chon ne d3d engine machen willst, dann solltest du so spielrelevanten kram wie
NetworkClient
Verwaltet einen Client, connected über DirectPlay zu einem Server. Protokoll wird vom Engine-User festgelegt.besser rauslassen, mit 3d hat das nämlich nichts mehr zu tun(eher mit der spielmechanik)
-
Wer braucht ein Spiel? Ich will mich in Sachen DirectX fortbilden.
MfG SideWinder
-
was ne frage *g*.
mach doch einfach eins. strategiespiele sind denke ich recht anspruchsvoll (echtzeit)
oder mach einfach nur techdemos...mit tollen effekenoder auch ohne :).
mfg
-
Konkurrenz sehe ich hier nicht gern. -.-
war nur ein Joke *g*
-
Mein "Anti-Effekte - Pro-Spiel" - Post eigentlich auch...
-
SideWinder schrieb:
Okay andere Frage: Fehlt außer Shadern noch ein anderer Grafikeffekt den man dringend benötigt um ein halbwegs brauchbares 3D-Spiel zu erstellen?
Texturieren von Polygonen.
Bye, TGGC \-/
-
Was für ein geiler Effekt.
-
Ggf. noch ein Partikelsystem, bestehend aus
ParticleSpawner und
Particle
?
-
partikelsysteme wären wirklich noch fein