Je suis confus quant au concept de Framebuffer et de Renderbuffer. Je sais qu'ils doivent être rendus, mais je veux les comprendre avant de les utiliser.
Je sais qu'un tampon bitmap est nécessaire pour stocker le résultat du dessin temporaire. Le tampon arrière. Et l'autre tampon doit être vu à l'écran lorsque ces dessins sont en cours. Le tampon avant. Et retournez-les et dessinez à nouveau. Je connais ce concept, mais il est difficile de relier ces objets à ce concept.
Quel est le concept et les différences entre eux?
opengl
rendering
framebuffer
éonil
la source
la source
Réponses:
Cette page contient quelques détails qui, je pense, expliquent assez bien la différence. D'abord:
Tandis que:
la source
L' objet Framebuffer n'est pas en fait un tampon, mais un objet agrégateur qui contient une ou plusieurs pièces jointes, qui, à leur tour, sont les tampons réels. Vous pouvez comprendre le Framebuffer comme une structure C où chaque membre est un pointeur vers un tampon. Sans aucune pièce jointe, un objet Framebuffer a une très faible empreinte.
Désormais, chaque buffer attaché à un Framebuffer peut être un Renderbuffer ou une texture .
Le Renderbuffer est un tampon réel (un tableau d'octets, d'entiers ou de pixels). Le Renderbuffer stocke les valeurs de pixels au format natif, il est donc optimisé pour le rendu hors écran. En d'autres termes, dessiner sur un tampon de rendu peut être beaucoup plus rapide que dessiner sur une texture. L'inconvénient est que les pixels utilisent un format natif dépendant de l'implémentation, de sorte que la lecture à partir d'un Renderbuffer est beaucoup plus difficile que la lecture à partir d'une texture. Néanmoins, une fois qu'un Renderbuffer a été peint, on peut copier son contenu directement à l'écran (ou vers un autre Renderbuffer , je suppose), très rapidement en utilisant des opérations de transfert de pixels. Cela signifie qu'un Renderbuffer peut être utilisé pour implémenter efficacement le modèle de double tampon que vous avez mentionné.
Les tampons de rendu sont un concept relativement nouveau. Avant eux, un Framebuffer était utilisé pour rendre une texture , ce qui peut être plus lent car une texture utilise un format standard. Il est toujours possible de rendre une texture, et c'est assez utile quand on a besoin d'effectuer plusieurs passes sur chaque pixel pour construire une scène, ou pour dessiner une scène sur une surface d'une autre scène!
Le wiki OpenGL a cette page qui montre plus de détails et de liens.
la source