Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:26

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Feb 03, 2006 12:54 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Nov 18, 2005 18:28
Beiträge: 26
Hi, zuerst möchte ich mich entschuldigen für den eventuell unverständlichen Thread-Titel. Ich wusste keine bessere Beschreibung meiner Frage. :roll:

Also, im "ereignisorientierten" Ablauf einer normalen Delphi-Anwendung lassen sich verschiedene Abschnitte jener Anwendung problemlos programmieren und ohne weitere Konflikte realisieren. Ich hoffe, das war für jeden bis hierhin verständlich. :lol:

Nun sitze ich seit längerer Zeit an einem kleinen Spiel á la Trackmania. Wer's nicht kennt, benutze bei Interesse bitte Google.

3 strukturelle Elemente sind bei meinem Spiel vorhanden.
1. Die Umgebung während des Rennens selber.
2. Der Strecken-Editor
3. Das GUI

Mein Problem ist das Management der OpenGL Verarbeitung. Ich habe im Prinzip eine einzelne Render-Prozedur in der nach verschiedenen If-Strukturen verschiedene Szenen zu rendern sind.

Beispiel:

Ist der Wert "gui_ACTIVE" wahr, dann zeichnet die Routine das Spielmenü. Ist sie falsch, dann eben nicht.

Nun kann ich mir beim besten Willen nicht vorstellen, dass größere Projekte auch in diesem Stil realisierbar sein sollen.

Wie kann ich die verschiedenen Abläufe in einer Renderprozedur besser koordinieren bzw. strukturieren? Oder ist es eher sinnvoll vollkommen anders rendern zu lassen, also mit verschiedenen Prozeduren???


Ich hoffe irgend jemand hat mein Problem und meine Fragen verstanden. :wink:

Bei komplettem Unverständnis oder sonstigen Fragen werde ich demnächst auch gerne auszugsweise Code zeigen, eventuell hilft das.
mfG, Killian.

_________________
Die Antwort ist 17, aber wie lautet die Frage?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 03, 2006 14:29 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Ich denke zwar, dass ich deine Antwort nicht richtig beantworten kann, weil ich noch nicht mit grösseren Projekten gearbeitet habe, aber ich versuche es denoch:

In Tutorial von Sascha verwendet er eine Statemaschine, die auf Art deiner IF-Abfragen arbeitet.
Dort überprüft er dann ob z.b der Editor aktiv ist und nimmt dann die Renderroutine für den Editor.

Hier an der Stelle muss ich nochmal nachfragen: GUI ist bei dir das Menu, dass der Spieler nach dem Spielstart sieht?
Nicht das es bei anderen Szenen auch noch gezeichnet wird.
Ansonsten ist es ein gutes Konzept.

In meinem eigenen Projekt wende ich auch die Methode von Sascha an, nur das ich nicht beim Rendern unterscheide sondern direkt beim Mainloop die passende Funktion aufrufe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 03, 2006 15:19 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Jo. Dafür verwendet man afaik eine Statemachine, wie es i0n0s bereits angedeutet hat ;)

OpenGL ist ja bleistiftsweise auch eine Statemachine, wenn auch eine recht komplexe. Im Gegensatz dazu ist die von Sascha recht simpel, reicht aber für viele Anwendungsgebiete aus ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 04, 2006 16:31 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Geschickt finde ich OOP + Statemachine.

Also du hast über einen Zustand codiert was gerade gezeichnet werden soll. Jedes Zu zeichnende Objekt, verwaltet aber seine Zeichenroutine selbst (GUI, Editor). Außerdem legst du noch Klassen an, die koordinieren in welchem Szenario was zu sehen ist. Also z.B. ein Menü-Controller der nach und nach alle Menü-Komponenten aufruft damit die sich selbst zeichnen. So kannst du alles schön in kleine Teile zerhacken, und brauchst trotzdem nocht zuviele Aufrufe. Du rufst dann ja nur noch die entsprechende Kontrollklasse auf. Die regelt das dann...

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 05, 2006 18:38 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Nov 18, 2005 18:28
Beiträge: 26
Hallo, danke für eure Hilfe, das hat mir sehr geholfen.

@Flash: Super, solch ein Arbeitsprinzip geht exakt in meine gewünschte Richtung. Da ich im Moment vor dem Problem stehe, gnadenlos im WirrWarr meiner Render-Routine zu versickern, ist dein Vorschlag "die Erlösung" :D :D :D

Schönes Forum, kompetente Leute. Toll!

mfG, Killian

_________________
Die Antwort ist 17, aber wie lautet die Frage?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 07, 2006 16:08 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
WirrWar + OOP :idea: Mir fällt gerade ein, dass ich noch ein Tutorial fertig zu schreiben habe... Der 2. Teil zur Softwareentwicklung ist aber leider ein echtes Monster geworden... :x

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]