J'ai ce morceau de code
glReadBuffer( GL_FRONT );
glReadPixels( 0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer );
Ce qui fonctionne parfaitement dans tous les GPU Nvidia et AMD que j'ai essayés, mais il échoue dans presque toutes les vidéos intégrées Intel que j'ai essayées. Il fonctionne en fait dans un très ancien 945GME, mais échoue dans tous les autres. Au lieu d'obtenir une capture d'écran, j'obtiens en fait un écran noir.
Si cela aide, je travaille avec le moteur Doom3 et ce code est dérivé du code de capture d'écran intégré. Soit dit en passant, même avec le jeu d'origine, je ne peux pas faire de capture d'écran sur ces appareils Intel de toute façon. Je suppose qu'ils n'implémentent pas correctement la norme ou quelque chose. Y a-t-il une solution à cela?
Réponses:
Les graphiques Intel ont toujours eu des problèmes de lecture ou de dessin dans le tampon avant. Une bonne règle d'or avec Intel est la suivante: si vous ne pouvez pas le faire dans D3D, n'essayez même pas de le faire dans OpenGL, même si la spécification dit que vous devriez pouvoir le faire - et D3D ne le fait pas autorisez l'accès au tampon frontal de cette manière, alors ... utilisez simplement GL_BACK à la place.
la source