Question

Je crée généralement un format de pixel en utilisant wglChoosePixelFormatARB() avec ces arguments (entre autres):

WGL_DOUBLE_BUFFER_ARB = GL_TRUE
WGL_SAMPLE_BUFFERS_ARB = GL_TRUE
WGL_SAMPLES_ARB = 4

i.e.. double tampon sur et x4 multiéchantillonnage. Cela fonctionne très bien.
Mais lorsque je tente de tourner la double mémoire tampon:

WGL_DOUBLE_BUFFER_ARB = GL_FALSE
WGL_SAMPLE_BUFFERS_ARB = GL_TRUE
WGL_SAMPLES_ARB = 4

L'appel à wglChoosePixelFormatARB() échoue (ou plutôt indique qu'il n'a pas créé quoi que ce soit)
Quand je tourne efficacement multiéchantillonnage off:

WGL_DOUBLE_BUFFER_ARB = GL_FALSE
WGL_SAMPLE_BUFFERS_ARB = GL_TRUE
WGL_SAMPLES_ARB = 1

Je travaille bien à nouveau.

Y at-il quelque chose d'inhérent qui empêche un format de pixels en mémoire tampon non-double pour travailler avec multiéchantillonnage?

La raison pour laquelle je tourne le double buffering off est d'atteindre la fréquence d'images sans contrainte. avec double tamponnage le frame rate que je reçois est que jusqu'à 60 FPS (cela fonctionne ordinateur LCD à 60 Hz). Mais avec le double buffering off je peux obtenir jusqu'à 1500 FPS. Est-il possible d'y parvenir avec une double mise en mémoire tampon sur?

Était-ce utile?

La solution

En théorie, le dessin dans un seul mode tampon signifie que vous modifiez directement ce qui est présenté à l'écran (aka la mémoire tampon avant). Depuis que la mémoire est dans un format spécifique déjà, vous ne recevez pas de choisir un autre. (Je dis en théorie parce que la plate-forme ne porte toutefois qu'il lui semble dans la pratique. Aero par exemple ne permet pas d'accéder à la mémoire tampon avant).

En outre, lorsque multiéchantillonnage faire, l'étape qui convertit les échantillons / pixel X à 1 pixel de dessin lorsque l'arrière-tampon est copié dans la mémoire tampon avant (ce qu'on appelle l'étape de détermination). En mode mono-tampon, il n'y a pas une telle étape.

En ce qui concerne votre verrouillage de 60 images par seconde, vous voudrez peut-être regarder WGL_EXT_swap_control . Le problème ici est que vous ne voulez généralement pas mettre à jour ce qui est montré à l'écran tandis que l'écran est rafraîchi les données; il crée la déchirure. Donc, par défaut, les mises à jour swap que lorsque l'écran est vertical synchronisation (aka vsync), de sorte que vous finissez par verrouillage à la fréquence de rafraîchissement de l'écran.

Si cela ne vous dérange pas votre affichage montrant des parties de cadres différents, vous pouvez le désactiver.

Pour être complet, il y a un autre mode appelé tampon triple, qui a essentiellement le rendu de ping-pong GPU entre 2 back-tampons tandis que le tampon avant est représentée. Il appartient au gpu de choisir le dernier arrière-tampon fini quand vient le temps de changer ce qui apparaît à l'écran (vsync). Malheureusement, je ne suis pas au courant d'une méthode GTL pour demander triple buffering.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top