2010-10-26 22 views
1

Sur une machine MAC OS X, j'utilise FBO, profondeur RBO et texture RBO avec freeglut pour rendre une scène 3D à FBO et faire un rendu à la texture. Tout en utilisant les fonctions glut standard et glutMainLoop à la fin. J'utilise glReadPixels pour lire à partir du FBO. Je peux voir que les pixels sont lus correctement.glutHideWindow et glReadPixels sur OS X

Cependant, lorsque je cache la fenêtre de saturation à l'aide de glutHideWindow, je trouve que la totalité de la mémoire tampon récupérée par glReadPixels est définie pour effacer la couleur (ff 00 00 00). Je ne change rien d'autre. Je pense que le FBO n'est pas rendu du tout quand la fenêtre est cachée. Comment puis-je changer cela? Ceci est observé sur MAC OS X. S'il vous plaît laissez-moi savoir si vous voulez regarder le code.

Répondre

1

La fenêtre ne peut pas être recouverte ou le tampon ne sera pas mis à jour. La solution est de rendre au tampon hors écran (si votre carte le supporte). Sinon, gardez la fenêtre au-dessus des autres, sinon le tampon sera invalide.

EDIT: cela doit faire avec le système de fenêtre, et non avec opengl

+0

des exemples de avaliable rendre à tampon hors-écran? –

+0

De même, comment définir le système de fenêtrage dans OS X dans ce cas afin qu'il soit mis à jour? J'utilise glut. –

+0

Désolé, je ne sais pas pour OS X, mais pour Linux, il n'est pas supporté. Pour le rendu hors écran, cela peut aider http://stackoverflow.com/questions/214437/opengl-fast-off-screen-rendering Si les tampons sont supportés par votre carte, vous pouvez l'utiliser. –