Einige Grundlegende Fragen zu OpenGL
-
Ich habe eine kleines Projekt und bin gerade in der Planung was ich dafür alles benötige.
Ich möchte eine einfache 3D Engine schreiben die. Sie soll wie sauerbraten (www.sauerbraten.org) auf einer octa struktur basieren. Es soll kein 3D-Shooter werden, sondern nur zum editieren und herumlaufen gedacht sein. Das ganze mit dem Hintergrund eines Servers, auf dem man sich einzelne Bereiche einer riesigen 3D-Map reservieren kann um sich "künstlerisch zu verewigen".
Texturen sollen mittels einer Scriptsprache (?) generiert werden. Das nach Möglichkeit mit den grundlegenden OpenGL Funktionen. Also rendertotextur oder eventuell auf älteren Grafikkarten mit anderen Funktionen wie glCopyTexImage2D. So hat man größtmögliche Freiheit, aber geringes Datenvolumen.
Zur Einfachheit gibt es keinerlei Lichtberechnungen oder Shader.
Da ich noch nicht soviel mit OpenGL gemacht habe, hier einige Fragen:
Welchen Grafikkarten unterstützen bereits das Rendern direkt in eine Textur? Können ältere Grafikkarten diese Funktion, wenn sie mit einem aktuellen Treiber benutzt werden?
Wie handhabt man größere Polygonen "Haufen". Wenn ich das richtig verstanden habe stecke ich die 3D-Informationen in VBOs, welche im Grafikkartenspeicher liegen.
Wenn ich nun einen einfachen Entfernungstest (Nebel) und Occlusion Culling (vorausgesetzt die Grafikkarte unterstützt es) benutzen möchte um nicht die gesamte Szene Zeichen zu müssen, schalte ich die VBOs einfach ein und aus?
Gibt es noch andere Dinge die ich beachten muss?

-
Welchen Grafikkarten unterstützen bereits das Rendern direkt in eine Textur?
Mit einem aktuellen (neuer als 2005) Treiber kann zb eine Geforce2MX auch FBOs.
Integrierte Grafikloesungen (Chipsatz/Notebook) haben haeufig ihre Schwierigkeiten mit Aktualitaet.Wie handhabt man größere Polygonen "Haufen"
Displaylisten oder VBOs.
Wenn ich [...] Occlusion Culling benutzen möchte um nicht die gesamte Szene Zeichen zu müssen, schalte ich die VBOs einfach ein und aus?
Du zerteilst Deine Geometrie in sinnvolle Haeppchen und zeichnest nur die VBOs die auch sichtbar sind. Culling auf Polygonebene zahlt sich selten aus.
Gibt es noch andere Dinge die ich beachten muss?

Ja.
-
hellihjb schrieb:
Mit einem aktuellen (neuer als 2005) Treiber kann zb eine Geforce2MX auch FBOs.
Integrierte Grafikloesungen (Chipsatz/Notebook) haben haeufig ihre Schwierigkeiten mit Aktualitaet.Die Verfügbarkeit auf alten Grafikkarten habe ich mir erhofft.

Und bei Chipsatz Grafik ist auch glCopyTexImage2D nicht immer vorhanden. Daher werde ich die erst einmal ignorieren.hellihjb schrieb:
Wie handhabt man größere Polygonen "Haufen"
Displaylisten oder VBOs.
Wenn ich [...] Occlusion Culling benutzen möchte um nicht die gesamte Szene Zeichen zu müssen, schalte ich die VBOs einfach ein und aus?
Du zerteilst Deine Geometrie in sinnvolle Haeppchen und zeichnest nur die VBOs die auch sichtbar sind. Culling auf Polygonebene zahlt sich selten aus.
Genau so habe ich es verstanden.
hellihjb schrieb:
Gibt es noch andere Dinge die ich beachten muss?

Ja.
Und die währen? ?.?
-
Osbios schrieb:
Es soll kein 3D-Shooter werden, sondern nur zum editieren und herumlaufen gedacht sein. Das ganze mit dem Hintergrund eines Servers, auf dem man sich einzelne Bereiche einer riesigen 3D-Map reservieren kann um sich "künstlerisch zu verewigen".
Interessant
Um was handelt es sich? Ich frage aus rein privatem Interesse.Osbios schrieb:
Texturen sollen mittels einer Scriptsprache (?) generiert werden
[...]Zur Einfachheit gibt es keinerlei Lichtberechnungen oder Shader.Skriptsprache? Soll diese für den Anwender eine Schnittstelle bieten? Falls du das ganze
mit C oder C++ erstellst -> Python.
mii Java -> GroovyShader & Co. würde ich nicht ganz ausschließen und während der Programmierung eine mögliche Integration im Hinterkopf zu halten.
Osbios schrieb:
Welchen Grafikkarten unterstützen bereits das Rendern direkt in eine Textur? Können ältere Grafikkarten diese Funktion, wenn sie mit einem aktuellen Treiber benutzt werden?
Die Bezeichnung "ältere Grafikkarten" ist dehnbar
Besonders wenn man die Entwicklungszeit für dein Projekt mit einbezieht und was ist mit Onboard-Chips
Es ist unmöglich an alle zu denken. In der Regel (zu mindestens im Windowsbereich) sollte bei der Unterstützung von GraKa's nicht weiter als 4 Jahre zurück gesehen werden. Falls ein Rechner eine ältere Besitz ist es zumutbar fünf bis zehn Euro in eine GraKa zu investieren 
-
Um was es sich handelt? Ich habe eigentlich schon alles niedergeschrieben was ich momentan im Sinn habe. Die Idee ist mir mit Sauerbraten gekommen.
Einerseits ist das Editieren einer Map sehr intuitiv wenn man ein Octa Struktur benutzt. Andererseits kann man auf den Coop-Servern (Wo man zusammen im Multiplayer editiert) sehen, was mehrere Leute innerhalb weniger Stunden aufbauen können.Leider wurde schon sehr lange nichts mehr im Bereich Coop-Edit weiterentwickelt. Außerdem ist die Sauerbraten Engine nicht für so große Maps ausgelegt, was der Hauptgrund für eine Eigenentwicklung ist.
Ich habe hier einige Maps die belegen einen GB-Ram wenn sie geladen sind. Mit meiner Hardware kein Problem, jedoch ist es eine kleine Map wenn mehrere Leute daran arbeiten. Viele Benutzer haben zudem schwächere Hardware.Eine Eigenkonstruktion erleichtert auch den Einbau vieler Dinge. Unter anderem die Generierung von Texturen, die Rechteverwaltung und die Skalierung.
Zum Textur Generieren:
Ich weiß noch nicht wie ich es aufbauen werde. Es sollte schon Benutzerfreundlich sein. Ich werde mich mal umsehen wie andere Texturgeneratoren aufgebaut sind. Eventuell habe ich Glück, und kann ein OpenSource-Projekt finden, welches ich integrieren kann.Nun man kann tolle Sachen mit Shadern machen, jedoch kenne ich mich keinen Deut damit aus. Was sollte ich denn beachten, wenn ich diese nachträglich einbauen möchte?
Zu aller erst muss ich mich jetzt mit den benötigten Grundlagen vertraut machen. Also VBOs, dem aufbau der Octa-Struktur bzw. der Generierung von Polygonen aus der Octa-Struktur.
PS: Wie man dem Text entnehmen kann, würd das Projekt auch Open Source werden. Ich meine, das ganze basiert später sowieso auf einer bastelnden Gemeinschaft.

-
Texturen sollen mittels einer Scriptsprache (?) generiert werden
Schau dir mal Angelscript an, die haben genau so ein Programm dort schon gebaut mit Angelscript. Ausserdem ist AS eine C++-ähnliche Sprache und verdammt einfach in existierende Projekte einzubinden. Im Gegensatz zu Python oder LUA sind kaum Verrenkungen nötig und die Bindings laufen extrem einfach ab.
http://www.angelcode.com/angelscript/
rya.
-
Bei der Grafik schaue ich momentan in Richtung cairo (http://cairographics.org/) und das denn eventuell im svg Format.