JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=569c52800423e939dacd1ecfa0904a38Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

D3D Fenstermodus ruckelt
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Hasenfuß
Senior JLI'ler


Alter: 37
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 07.08.2006, 12:36    Titel: D3D Fenstermodus ruckelt Antworten mit Zitat

Hiho,

nachdem ich seit langem mal wieder an meinem Projekt weitergemacht habe, hab ich festgestellt, dass sämtliche D3D Anwendungen stark ruckeln (fps werden ca. um die Hälfte gesenkt). Sobald ich sie im Fullscreen starten lasse ist alles normal. Und jetzt kommt das schärfste^^: Wenn ich ein anderes Programm starte, zB. Trillian, dann läufts im Fenstermodus einwandfrei mit normalen fps...
Habe bereits versucht, die neuste DX Version draufzuspielen und das SDK (verwende das Summer 2004 update) nochmal neu installiert.
Habe eine Geforce 4MX440 mit neustem Treiber, AthlonXP 1800+ ~1.5GHz, 512MB DDR, Windows XP Prof mit SP2.
Falls es hilft, hier der Code, mit dem ich D3D starte:

CPP:
bool CDirect3D::Init(HWND hWnd,BOOL bWindowed,int scrWidth,int scrHeight,CErrorLog* ErrLog)
{
   m_ErrorLog = ErrLog;

   if(FAILED(m_lpD3D = Direct3DCreate9(D3D_SDK_VERSION)))
   {
      m_ErrorLog->Write("[CDirect3D]Direct3DCreate9 FAILED");
      return false;
   }

   D3DPRESENT_PARAMETERS PParams;
   ZeroMemory(&PParams,sizeof(PParams));

   PParams.SwapEffect         = D3DSWAPEFFECT_DISCARD;
   PParams.hDeviceWindow      = hWnd;
   PParams.Windowed         = bWindowed;   

   PParams.BackBufferWidth      = scrWidth;
   PParams.BackBufferHeight   = scrHeight;
   PParams.BackBufferFormat   = D3DFMT_A8R8G8B8;

   m_scrWidth = scrWidth;
   m_scrHeight = scrHeight;

    HRESULT hr;

    {
      m_ErrorLog->Write("[CDirect3D]CreateDevice FAILED");
      const char* Err = {0};
        DXTRACE_ERR(Err,hr);
        return false;
    }

   if(FAILED(hr = m_lpD3DDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&m_lpBackBuffer)))
   {
      m_ErrorLog->Write("[CDirect3D]GetBackBuffer FAILED");
      const char* Err = {0};
      DXTRACE_ERR(Err,hr);
      return false;
   }   
   return true;
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 07.08.2006, 13:49    Titel: Antworten mit Zitat

Ok du hast 0 Enumerationssachen, aber wo genau renderst du, Schleife etc, sowas wäre interessanter.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 07.08.2006, 13:53    Titel: Antworten mit Zitat

Du meinst nicht, das Trillian dann ruckelfrei läuft, sonder die D3D Anwendung, ja?

Also, ich weiß nur, das es normal ist, das Windowed langsamer ist, weil Windows dann ja ncoh mehr verwlaten muss. Hast du Fullscreen gehört der Bidlschirm dir, und die Grafikkarte braucht sich nur um ein einziges Programm zu kümmern.

Was du allerdings beschreibst, ist in er Tat merkwürdig, könnte am Treiber an Dx oder an Windows leigen, oder sonst wo dran.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 07.08.2006, 13:59    Titel: Antworten mit Zitat

Hmm...sowas ähnliches habe ich allerdings auch schon beobachten können.

Auf einigen unserer Schulrechner haben diese Visualisierungsformen des WMPlayers die Tendenz dazu zu ruckeln. Wenn ich allerdings ein anderes Fenster darüber öffne, läuft alles fließend im Hintergrund. Shocked
Ich weiß nicht, ob ich das auch schon hier bei mir am PC beobachten konnte, aber seltsam und beachtenswert finde ich es auf jeden Fall...
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 07.08.2006, 21:40    Titel: Antworten mit Zitat

Hm..Andersrum wärs eigentlich viel logischer. Aber probier vll. mal VSync. anzuschalten(nur im Fenstermodus). Kann sein das Windows irgendwie damit probleme hat.

The Lord of Programming hat Folgendes geschrieben:
Auf einigen unserer Schulrechner haben diese Visualisierungsformen des WMPlayers die Tendenz dazu zu ruckeln. Wenn ich allerdings ein anderes Fenster darüber öffne, läuft alles fließend im Hintergrund. Shocked

Wenn ein anderes Fenster davor ist, werden die Visualisierungsformen ja auch nicht angezeigt. Deshalb hörts wahrscheinlich auf.
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 07.08.2006, 22:20    Titel: Antworten mit Zitat

51m0n hat Folgendes geschrieben:
Hm..Andersrum wärs eigentlich viel logischer. Aber probier vll. mal VSync. anzuschalten(nur im Fenstermodus). Kann sein das Windows irgendwie damit probleme hat.

Ist im Fenstermodus VSync nicht immer aktiviert?


51m0n hat Folgendes geschrieben:


The Lord of Programming hat Folgendes geschrieben:
Auf einigen unserer Schulrechner haben diese Visualisierungsformen des WMPlayers die Tendenz dazu zu ruckeln. Wenn ich allerdings ein anderes Fenster darüber öffne, läuft alles fließend im Hintergrund. Shocked

Wenn ein anderes Fenster davor ist, werden die Visualisierungsformen ja auch nicht angezeigt. Deshalb hörts wahrscheinlich auf.

Ich denke es war gemeint, dass es nicht mehr ruckelt, wenn ein anderes Fenster nur Teilweise über dem Visualisierungs dingens ist oder sogar nur gerade aktiv über dem WMP ist, diesen aber garnicht bedeckt. Ist auf den rechner der schule zu der ich bis vor 3 Wochen noch ging auch so...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hasenfuß
Senior JLI'ler


Alter: 37
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 07.08.2006, 22:21    Titel: Antworten mit Zitat

VSync ist doch standardmäßig an oder?

Hier ist meine Spielschleife und die Renderfunktion der Engine. Selbst wenn ich beim GameState die gesamte Draw-Funktion leer lasse ist die Framerate niedrig.

CPP:
while(Engine->Running())   // Solange die Engine läuft...
{
   Engine->HandleEvents();   //... Eingaben verarbeiten
   Engine->Update();      //... Updaten
   Engine->Draw();         //... Zeichnen
}


CPP:
void CEngine::Draw()
{
   m_Direct3D.GetDevice()->Clear(0,0,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),0,0); // Bildschirm löschen
   m_Direct3D.GetDevice()->BeginScene();   // Szene beginnen
   if(states.empty())   // Fehlerbehandlung wenn keine States vorhanden sind
      m_ErrorLog.Write("[CEngine]Draw() NO STATES");
   else
      states.back()->Draw(this);   // aktuellen State zeichnen
   m_Direct3D.GetDevice()->EndScene();   // Szene beenden
   m_Direct3D.GetDevice()->Present(0,0,0,0); // und darstellen
}


Habe zum Test auch mal die Frameratebeispiele aus JLI2 ausprobiert. Wenn ich die im Windowed-Modus starte, hab ich auch nur noch halb so viele fps wie im Fullscreen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 07.08.2006, 23:41    Titel: Antworten mit Zitat

manu hat Folgendes geschrieben:
51m0n hat Folgendes geschrieben:


The Lord of Programming hat Folgendes geschrieben:
Auf einigen unserer Schulrechner haben diese Visualisierungsformen des WMPlayers die Tendenz dazu zu ruckeln. Wenn ich allerdings ein anderes Fenster darüber öffne, läuft alles fließend im Hintergrund. Shocked

Wenn ein anderes Fenster davor ist, werden die Visualisierungsformen ja auch nicht angezeigt. Deshalb hörts wahrscheinlich auf.

Ich denke es war gemeint, dass es nicht mehr ruckelt, wenn ein anderes Fenster nur Teilweise über dem Visualisierungs dingens ist oder sogar nur gerade aktiv über dem WMP ist, diesen aber garnicht bedeckt. Ist auf den rechner der schule zu der ich bis vor 3 Wochen noch ging auch so...

Exakt. Ich finds auch total unlogisch, aber die Visualisierung ruckelte wirklich, sobald sie im Vordergrund war. Egal wieviel davon zu sehen war, sobald man ein anderes Fenster im Vordergrund hatte, lief es wieder flüssig.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 07.08.2006, 23:49    Titel: Antworten mit Zitat

Und da kommt mir die Idee... Wie wärs, wenn du das Programm mal an jemanden oder an mehrere weitergibst. Dann kannst du sehen, ob es nur bei dir oder bei allen/anderen so ist...

Und könntest du bitte nochwas ausprobieren(zu meinem interesse). Und zwar mal das programm im Fullscreen starten ==> minimieren ==> und wieder maximieren. Fallen dann die FPS auch um die hälfte?

(so ist das mit meinem ersten Projekt und ich kann es mir nicht erklären. Denn falls ich beim restore was falsch gemacht haben sollte und eins, zwei grafiken(ich hab gradmal 0,5-1 MB an grafiken) doppelt im Speicher habe. Die FPS sollnten nicht von 800 auf 388 sinken) Alls du nun von halbierter FPS rate sprachst, hab ich mir gedacht: "hey.. Idea "
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hasenfuß
Senior JLI'ler


Alter: 37
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 08.08.2006, 08:13    Titel: Antworten mit Zitat

manu hat Folgendes geschrieben:
Und da kommt mir die Idee... Wie wärs, wenn du das Programm mal an jemanden oder an mehrere weitergibst. Dann kannst du sehen, ob es nur bei dir oder bei allen/anderen so ist...


Brauch ich gar nicht, denn es scheint ja, wie ich oben schon gesagt habe, bei jeder D3D-Anwendung so zu sein - wenigstens beim FRAMETIMING Beispiel von JLI2 habe ich, wenn ich im Code den Parameter auf TRUE stelle für Fenster, 40-45 fps. Starte ich dann Trillian, steigt die Zahl mitten im Laden plötzlich auf die gewohnten 85. Und dabei spielt es keine Rolle ob das Programm im Vordergrund ist oder nicht!

Was ich zu meinem Code oben noch sagen wollte: Ich habe auch die Funktionen HandleEvents und Update vollständig leer gelassen, also nur noch ein schwarzes Fenster zeichnen lassen, was aber keine Verbesserung brachte.

<edit> Das mit dem Minimieren und Maximieren kann ich gerne ausprobieren, muss dazu aber noch das mit DeviceLost einbauen, also kann ichs jetz grad noch nicht sagen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 08.08.2006, 08:18    Titel: Antworten mit Zitat

kanns sein, dass eine bestimmte TrillianAnwendung ausgeführt wird, während du trillian nicht gestartet hast und das diese sich net mit deinem Programm versteht? Guck ma im TaskManager bei Prozesse, 1x bevor du trillian startest und 1x danach, was sich da ändert. Weil es scheint ja offensichtlich was mit Trillian selbst zu tun haben...

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hasenfuß
Senior JLI'ler


Alter: 37
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 08.08.2006, 08:26    Titel: Antworten mit Zitat

Ich habe Trillian oben nur als Beispiel benutzt. Das ganze passiert zB. auch bei LuaEdit.
Bei Winamp oder Firefox bzw. dem Visual Studio allerdings nicht.
Habe da noch kein System entdecken können.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 08.08.2006, 10:31    Titel: Antworten mit Zitat

Hasenfuß hat Folgendes geschrieben:


<edit> Das mit dem Minimieren und Maximieren kann ich gerne ausprobieren, muss dazu aber noch das mit DeviceLost einbauen, also kann ichs jetz grad noch nicht sagen.


Nein. In dem Fall musst du dir die Mühe nicht extra machen. Smile Da es ja bei dir bei allen (D)3D Anwendungen ist...

Hasenfuß hat Folgendes geschrieben:
Ich habe Trillian oben nur als Beispiel benutzt. Das ganze passiert zB. auch bei LuaEdit.
Bei Winamp oder Firefox bzw. dem Visual Studio allerdings nicht.
Habe da noch kein System entdecken können.

Ich hab so irgendwie im gefühl, dass es mit dem DirectX SDK oder mit der DirectX runtime ansich oder deren Konfiguration zusammenhängt, welche du bei dir installiert hast
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hasenfuß
Senior JLI'ler


Alter: 37
Anmeldedatum: 20.08.2002
Beiträge: 291

Medaillen: Keine

BeitragVerfasst am: 08.08.2006, 10:44    Titel: Antworten mit Zitat

Das dachte ich mir auch schon, hab daher die neuste DX end user version runtergeladen und das SDK nochmal neu installiert. Hat aber auch nix gebracht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 08.08.2006, 12:46    Titel: Antworten mit Zitat

Hasenfuß hat Folgendes geschrieben:
Das dachte ich mir auch schon, hab daher die neuste DX end user version runtergeladen und das SDK nochmal neu installiert. Hat aber auch nix gebracht.


Vielleicht mal in "systemsteuerung ==> DirectX" gucken, ob Debug oder retail eingestellt ist und ggf. mal umstellen auf das andere..

aber sonst fällt mir auch nichts mehr wirklich ein...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum