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

1

29.02.2004, 19:58

vsync in Tribase ausschalten

Hi Leute,
hab die Frage schon mal gestellt aber leider keine gescheite antwort erhalten:

Deshalb nochmal meine Frage:
Wie schalt ich vsync in TriBase aus. Bei mir zeigts die FPS immer Synchronisiert mit der Bildwiederholfrequenz des Bildschirm an.

Ich weiß bereits wo ich den PresentParam finde.

Aber was muss ich machen damit ich die Änderung in der TriBase Engine aktiv mache. Es reicht doch nicht das ich den Parameter ändere und auf Compilieren drück... oder???

bitte um Hilfe...

mfG
da_oAsch

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

29.02.2004, 20:24

hmmm...

dann hab ich was falsch gemacht.

Welchen PresentParam muss ich nochmal auf welchen wert setzten damit die Bildschirmwiederholfrequenz ignoriert wird, und somit vsync aus ist?

mfG
da_oAsch

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

29.02.2004, 20:55

PresentParams.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;

5

01.03.2004, 15:07

Hmmmm... bei mir haut das irgendwie nicht hin:

- Hab den Code in der TriBase folgendermaßen geändert

Außschnitt aus tbResult tbDirect3D::Init(...)


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Präsentationsstruktur ausfüllen
    ZeroMemory(&PresentParams, sizeof(D3DPRESENT_PARAMETERS));
    PresentParams.BackBufferWidth               = pConfig->Direct3D.VideoMode.Width;
    PresentParams.BackBufferHeight              = pConfig->Direct3D.VideoMode.Height;
    PresentParams.BackBufferFormat              = pConfig->Direct3D.BackBufferFormat;
    PresentParams.BackBufferCount               = 1;
    PresentParams.MultiSampleType               = pConfig->Direct3D.MultiSamplingType;
    PresentParams.MultiSampleQuality            = pConfig->Direct3D.dwMultiSamplingQuality;
    //PresentParams.SwapEffect                  = D3DSWAPEFFECT_DISCARD;
    PresentParams.SwapEffect                    = D3DSWAPEFFECT_COPY;
    PresentParams.hDeviceWindow                 = m_hWindow;
    PresentParams.Windowed                      = pConfig->Direct3D.bWindowed;
    PresentParams.EnableAutoDepthStencil        = TRUE;
    PresentParams.AutoDepthStencilFormat        = pConfig->Direct3D.ZStencilBufferFormat;
    PresentParams.Flags                         = pConfig->Direct3D.ZStencilBufferFormat != D3DFMT_D16_LOCKABLE ? D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL : 0;
    PresentParams.FullScreen_RefreshRateInHz    = pConfig->Direct3D.bWindowed ? D3DPRESENT_RATE_DEFAULT : pConfig->Direct3D.VideoMode.RefreshRate;
    PresentParams.PresentationInterval          = D3DPRESENT_INTERVAL_IMMEDIATE;
    //PresentParams.PresentationInterval            = pConfig->Direct3D.bWindowed ? D3DPRESENT_INTERVAL_DEFAULT : D3DPRESENT_INTERVAL_ONE;



Das ganze hab ich dann Compiliert.

Außerdem hab ich in meiner Render() Funktion eine FPS-Anzeige implementiert, das nach jedem 10. Rendervorgang (also vorm ende der Render Funktion) aktualisiert wird.

Trotzdem zeigt es immer ein ganzes Vielfaches von der Bildschirmwiederholfrequenz an.

Was mach ich da falsch?

mfG
da_oAsch

Anonymous

unregistriert

6

06.03.2004, 00:38

Meinst du wirklich die Bildwiederholungsfrequenz? Wenn ja dann müsstest du wissen, dass dies nur die frequenz nur besagt wie oft der bildpuffer in der sec angezeigt werden soll. Die FPS allerdings symbolisieren, meines Wissens nach, die Anzahl der gerenderten Bildbuffer pro sec.
Und es kann natürlich noch ein Fehler in deiner Framefunkton sein.(könntest du sie mal posten?)

Anonymous

unregistriert

7

18.03.2004, 14:31

VSync

VSync wird meines Wissens nach im Grafikkartentreiber bei Direct3D- bzw. OpenGl-Optionen ein- und ausgeschaltet.

Anonymous

unregistriert

8

26.03.2004, 10:11

Kann auch sein das du im Fenstermodus arbeitest.

Werbeanzeige