c ++ - Få spørgsmål om flere buffering i OpenGL på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har set dette, men det siger intet om tredobbelt buffering og de egentlige metoder.



  1. Hvad er den mest almindelige måde, hvorpå moderne spil udfører triple buffering?

  2. Hvad gør SwapBuffers nøjagtigt hvad angår OpenGL-stater?

  3. Er det muligt at udføre dobbelt og tredobbelt buffering uafhængigt af vinduessystem (for eksempel ved at manipulere med glDrawBuffer eller ved hjælp af FBO/PBO)?

  4. Har 3. selv mening med hensyn til ydeevne og fleksibilitet?


Bedste reference


Som ifølge OpenGL almindelige fejl på triple buffering: [3] [4]



  Du kan ikke kontrollere, om en driver tredobler buffering. Du kan forsøge at implementere det selv ved hjælp af en FBO. Men hvis føreren allerede gør tredobbelt buffering, vil din kode kun gøre det til firefemsbuffering. Som er normalt overkill.



SwapBuffers instruerer driveren til at bytte eller kopiere mellem forsiden og bagbufferen, det er ikke en OpenGL-kommando.