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

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

1

06.07.2006, 20:43

Probleme bei Vollbild (Tribase)

Die Beispiele aus Davids Buch lassen bei mir alle kompilieren und funktionieren auch einwandfrei. Jetzt habe ich allerdings angefangen eine Anwendung "from scratch" zu schreiben und auf einmal macht der Vollbildmodus Aerger..
Ich habe keine Ahnung an welcher Stelle im Code das Problem liegen koennte, deshalb bringt es auch nichts hier massenweise Codeschnipsel zu posten.
Auch sonst hab ich nichts aussergewoehnliches hinzugefuegt. Die Tribase ist mit dem ConfigDialog initialisiert und jetzt will ich einfach nur den "ge-Clearten" Bildschirm sehen. Aber im Vollbild flackert der Bildschirm vor sich hin und besteht statt aus einer roten Flaeche aus schwarz-roten Streifen.
Hat jemand eine Idee wo das Problem liegen koennte? Ein kleiner Hinweis waere schon sehr hilfreich da ich nicht wirklich weiss wo ich anfangen soll. Danke :)
"Have you tried turning it off and on again?"

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

2

06.07.2006, 21:27

Ok, Problem selbst geloest.
Die Tribase uebernimmt den Aufruf von Present() selbst und wenn ich das explizit nochmal mache ueberlagern sich wohl mehre Backbuffer. Wenn ich falsch liege bitte korrigieren
"Have you tried turning it off and on again?"

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

3

08.07.2006, 00:32

Ich merk gerade dass es damit nicht getan war. Das Bild rendert jetzt zwar korrekt im Vollbildmodus, aber es haben sich eine Menge anderer Probleme ergeben: Das Programm laeuft erheblich langsamer und die Eingabe funktioniert nicht mehr einwandfrei (die Bewegung der Maus werden nur minimal registriert) Ich hab alle moeglichen Konfigurationen und Aufloesungen durchprobiert, aber meine Anwendung klappt nur im Fenstermodus fehlerfrei..
Hat jemand ne Idee?

//Edit:
Ich glaube ich hab die Fehlerquelle gefunden: Von den Methodenaufrufen her hab ich im Vollbildmodus stolze 1780 FPS (im Fenster nur 80). Wie kommt dieser extrem haeufige Methodenaufruf zustande und wie kann ich ihn beseitigen? Die Maus kann logischerweise nicht 1000 Mal in der Sekunde Daten senden, also muss hier das Problem liegen!
"Have you tried turning it off and on again?"

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

08.07.2006, 07:37

Das liegt am V-Sync. 80 (Hz) ist wohl die Bildwiederholfrequenz deines Monitors.

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

5

08.07.2006, 14:04

Ja hab ich mir gedacht. Aber wie krieg ich die Frames im Vollbildmodus auf ca. 80 runtergeschraubt ? Bei 2000 FPS kann ich keine Eingabe verarbeiten, weil sich die Maus nur in jedem 20. Move-Aufruf bewegt hat..
"Have you tried turning it off and on again?"

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

6

10.07.2006, 23:36

D3DPRESENT_INTERVAL_ONE in D3DPRESENT_PARAMETERS setzen, dass müsste es beheben
Was es alles gibt, das ich nich brauche - Aristoteles

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

7

11.07.2006, 01:10

Zitat von »"CW_Kovok"«

D3DPRESENT_INTERVAL_ONE in D3DPRESENT_PARAMETERS setzen, dass müsste es beheben

Hm, das koennte klappen aber dummerweise komm ich an D3DPRESENT_PARAMETERS.PresentationInterval garnet dran wenn ich die Tribase verwende..
Ausserdem seh ich gerade dass David das schon erledigt hat :)

C-/C++-Quelltext

1
pConfig->Direct3D.bVSync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;

Auch wenn vSync aktiviert ist kommt es zu 2000 Funktionsaufrufen..
Ich denke das liegt daran dass DirectX zwar mit der Darstellung des Bildes wartet, das Programm aber weiterlaeuft.
"Have you tried turning it off and on again?"

Werbeanzeige