mein 3d programm fps < 70 ???
-
Hallo
ich hab ein 3d programm geschrieben, nur komischerweise bleibt die FPS immer < 70 oder < 80.
Die run() methode habe ich von den diirectx tutorials übernommen:void App::run() { MSG msg; ZeroMemory( &msg, sizeof(msg) ); bool message = false; while( msg.message != WM_QUIT ) { if ( getProgramSettings()->isActive() ) message = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE) != 0; else GetMessage(&msg, NULL, 0U, 0U) != 0; if ( message ) { // Translate and dispatch the message TranslateMessage(&msg); DispatchMessage(&msg); } else { if ( getProgramSettings()->isActive() && !getDevice()->isPause() ) { render(); } } } } void App::render() { getDevice()->getD3DDevice()->BeginScene(); paint(); getDevice()->getD3DDevice()->EndScene(); getDevice()->getD3DDevice()->Present(NULL, NULL, NULL, NULL); }
da ist es ungefähr das selbe.
komisch ist aber, wenn ich die d3ddevice->Present(NULL, NULL, NULL, NULL); rausnehme, dann hat mein programm 100% auslastung hat, wenn ich die Present drinn habe, dann geht sie auf <5% zurück.
wird in Present() sleep(100) ausgeführt ?eigentlich müsste ich über 1000 fps min haben
ausser den FPS Text habe ich nichts als objecte.
liegt das vieleicht am BCB6.0 den ich benutze ?
vieleicht liegts auch daran wie ich das d3ddevice initalisiere...
-
V-Sync in den Treibereinstellungen ausmachen :).
-
bringt absolut garnix
die demos von M$ erreichen bei mir ja auch über 3000fps
-
DEvent schrieb:
über 3000fps
Welche ?
-
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
geht's vielleicht so?
-
ich hab mir schon gedacht das Present() auf irgendwas wartet, wahrscheinlich hab ich wirklich irgendwo ein flag WAIT_FOR_DEVICE_IS_READY oder sowas
werds mal ausprobieren
zZ implementiere ich die automatische suche nach passenden d3d-device-modi, wie in der sdk von m$