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

Aktuelle Zeit: Fr Jul 18, 2025 12:35

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



Ein neues Thema erstellen Auf das Thema antworten  [ 28 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 18, 2006 01:05 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Jein. Theoretisch, so wird es im Bomberman-Tut erklärt, ist es richtig.
In der Praxis wird man aber bemerken, dass auch außerhalb des Renderns Zeit draufgeht. Zeit, die nicht im Timefactor berücksichtigt wird, sollte man da nur die Renderzeit messen.

Dies kann zu komischen Effekten führen. Daher einmal pro Frame Zeit messen und nicht zweimal (vor und nach Rendern). Also z.B. bei erneuten Aufruf vom Gameloop.

Damit bist du auf der sicheren Seite.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 18, 2006 09:36 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Der richtige Ort für das TBM ist z.B. der Idlehandler. Also immer das was tatsächlich periodisch aufgerufen wird.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 18, 2006 12:22 
Offline
DGL Member

Registriert: Mo Jan 09, 2006 17:31
Beiträge: 37
Flash hat geschrieben:
Der richtige Ort für das TBM ist z.B. der Idlehandler. Also immer das was tatsächlich periodisch aufgerufen wird.


Arbeite derzeit mit C++ da gibt's sowas ja leider nicht direkt ..

Hab jetzt die Überprüfzeit mehr an die Schleife angepasst, funtzt jetzt sehr gut. Hab ein paarmal durchgetestet und sehr gute Ergebnisse bekommen - scheint zu funtzen :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 18, 2006 13:41 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
öh bei C++, so rückständig es auch sein mag, gibt es sowas bestimmt auch ;) Wenn nicht, dann nimm einfach den ersten Punkt deines Gameloops.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 18, 2006 14:03 
Offline
DGL Member

Registriert: Mo Jan 09, 2006 17:31
Beiträge: 37
Frase hat geschrieben:
öh bei C++, so rückständig es auch sein mag, gibt es sowas bestimmt auch ;) Wenn nicht, dann nimm einfach den ersten Punkt deines Gameloops.


Hab ich funtzt jetzt super!

Wahrscheinlich gibts sowas schon, allerdings wären dann sicher irgendwelche zusätzlichen Librarys nötig und die sind wahrscheinlich plattform-abhängig - nichts für mich.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 18, 2006 19:31 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Wie wäre es mit SDL? Plattformunabhängige Library, die hier auch fleißig verwendet wird ;)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 19, 2006 12:44 
Offline
DGL Member

Registriert: Mo Jan 09, 2006 17:31
Beiträge: 37
Ich benutze SDL in C++ und für 2D output OpenGL. Mir wär so ne Funktion nicht bekannt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 19, 2006 13:26 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
In OpenGL-Anwendungen gibt es auch kein IDLE :p
(Ausnahmen ausgenommen)

Aber der Idlehandler existiert auch nur in VCL. Dort wird einfach geschaut ob irgendwelche Eingaben vom User kommen, wenn ja werden diese direkt verarbeitet, wenn nein wird der Idlehandler aufgerufen.

Also:
Code:
  1. while not done do
  2. begin
  3.   if not HandleEvents then Idlehandler;
  4. end;


SDL hat sowas nicht, und wird auch mit Biblotheken (solange es keine Engines sind) es nicht hinzubekommen.
Du kannst dir sowas natürlich selber programmieren, bringt aber nichts, weil der Game-/Mainloop schon die richtige Stelle ist.

Aber SDL ist trotzallem die richtige Wahl, einfach weil man genug Kontrolle über alles hat und es plattformunabhängig ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 19, 2006 14:57 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
höm? Also afaik hat SDL sowas. Und wenn nicht, kann man es sich ganz leicht selber basteln.

€dit: In diesem Fall zieht Teil 2: "Und wenn nicht, kann man es sich ganz leicht selber basteln." ;)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 19, 2006 18:39 
Offline
DGL Member

Registriert: Mo Jan 09, 2006 17:31
Beiträge: 37
In meiner Anwendung gibts onehin kein Idle weil die GameSchleife ja sooft wie möglich aufgerufen wird.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 20, 2006 16:22 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
dann ist das dein "Idle-Handler" weil er dafür sorgt, dass dein Programm nicht faul ist, sondern immer was macht.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 21, 2006 00:38 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Wenn man es genau betrachtet ist es fast schon eine Grundsatzfrage. Immerhin gibt es ja theoretisch kein idle. Sobald die CPU oder sonstwas mal nichts zu tun hat, beginnt der IDLE-Prozess die restliche CPU-Zeit zu verbrauchen. Was macht der da eigentlich? Und warum macht er das? Damit die anderen Prozesse nicht auf dumme Gedanken kommen?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 21, 2006 08:52 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Die CPU muss immer etwas tun, weil sobald kein nachfolgender Befehl (ASM) mehr da ist, bleibt sie stehen und nichts in der Welt kann sie wieder aufwecken (mal abgesehen von interrupts, aber da weiss ich nicht, ob die überhaupt durchkommen wenn die CPU steht).
Das heisst, wenn der Scheduler im moment keinen sinnvollen Prozess der CPU zuweisen kann, weist er einfach Idle zu, damit die CPU 'aufweckbar' bleibt. will heissen dass sie nach Ablauf der Zeitscheibe wieder vom BS eingenommen werden kann, um jetzt wieder zu kucken, welcher Prozess nun dran ist.
Es wäre nämlich bedeutent komplizierter, die CPU im BS verweilen zu lassen, wenn kein Prozess ansteht, anstatt einfach einen Dummyprozess mit in die Prozessliste einzutragen.

Aus dem selben Grund bauen manche Spiele, die auch netztwerkfähig sind selbst bei singleplayer eine Client-Server Architektur auf, weil man dann keine zweite Schnittsrtelle zwischen Oberfläche und Spielkern benötigt.

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 28 Beiträge ]  Gehe zu Seite Vorherige  1, 2
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.010s | 15 Queries | GZIP : On ]