Le superbible OpenGL traite des objets tampons de texture, qui sont des textures formées à partir de données à l'intérieur de Vbos. On dirait qu'il y a des avantages pour les utiliser, mais tous les exemples que j'ai trouvés créent des textures régulières. Quelqu'un a-t-il des conseils concernant quand utiliser un sur l'autre? P>
3 Réponses :
Selon le Registre d'extension , les tampons de texture ne sont que 1- Dimensionnel, ne peut faire aucun filtrage et doit être accédé en accédant à des texels explicites (par index), au lieu de des coordonnées normalisées de la texture de point flottant. Donc, ils ne constituent pas vraiment une substitution pour des textures régulières, mais pour de grandes matrices uniformes (par exemple, des matrices de painte ou par des données d'instance). Il faudrait beaucoup plus de sens de les comparer à des tampons uniformes que les textures ordinaires, comme faire ICI . P>
EDIT: strong> Si vous souhaitez utiliser des données VBO pour des textures 2D régulières, filtrées, vous n'obtiendrez pas une copie de données (mieux effectuée au moyen de PBOS). Mais lorsque vous souhaitez simplement que l'accès à une matrice simple aux données VBO et les attributs ne suffisent pas pour cela, un tampon de texture doit être la méthode de choix. P>
EDIT: strong> Après avoir vérifié le chapitre correspondant dans le superbible, j'ai constaté qu'ils mentionnent d'une part, que les tampons de texture sont toujours 1 dimensions et accessibles par des compensations entier discret Texel, mais sur la D'autre part, ne mentionne pas explicitement le manque de filtrage. Il me semble qu'ils sont plus ou moins les annoncent comme des textures qui simplifient leurs données de tampons, ce qui explique la question de l'OP. Mais comme mentionné ci-dessus, c'est juste la mauvaise comparaison. Les tampons de texture offrent simplement un moyen d'accéder directement aux données tampon dans des shaders sous la forme d'une matrice uni (bien qu'avec un type d'élément réglable), pas plus (ce qui les rend inutiles pour une texturation régulière) mais pas moins (ils sont toujours une excellente fonctionnalité. ). p>
C'est complètement faux. Cette extention prend en charge des textures 1D, 2D et 3D
@Vjo non, votre commentaire est faux. Lisez la spécification d'extension liée pour plus de perspectives. Peut-être que vous déconnectez des tampons de texture avec des PBO.
@Vjo: Les textures de tampon sont des tableaux unidimensionnels de Texels CODE> et
Les textures de tampon ne prennent pas en charge les coordonnées de texture de la texture de point flottant normalisées et le filtrage de la texture de tout type code >. Et BTW, cela fait partie de OpenGL 3.1+: OpenGL.org/sdk/ DOCS / MAN3 / XHTML / GLTEXBUPER.XML
Le premier lien m'a confondu, comme il a dit quelque chose sur des textures 1D, 2D et 3D. Votre deuxième modification a répondu à la question. Le lien de Calvin a expliqué mieux quel tampon de texture est
@Vjo Le premier lien (extension Spec) utilise exactement les mots Calvin utilisés dans son commentaire. La lecture de la survise d'une extension offre souvent plus de perspicacité que les ajouts de spécification, car ils sont souvent assez dispersés et pris hors contexte.
Y a-t-il des comparaisons de performance faites? Ne sont pas tous deux sur les graphismes RAM?
Les textures ordinaires sont utilisées lorsque VBO n'est pas pris en charge. P>
Cela est faux que les tampons de texture ne fournissent pas les caractéristiques habituelles des textures ordinaires.
Je ne peux pas dire que la réponse est fausse, car les textures ordinaires peuvent toujours être utilisées pour émuler le comportement de Texbo lorsque la fonctionnalité (extension) n'est pas prise en charge par le matériel.
@rotogLup OK, si vu de ce point, vous avez probablement raison.
Les textures de tampon sont un type de texture unique permettant d'accéder à un objet tampon d'une shader comme une texture. Ils sont complètement uniques à partir de textures Normal OpenGL, y compris Texture1D, Texture2D et Texture3D. Il y a deux raisons principales pour lesquelles vous utiliseriez une texture tampon au lieu d'une texture normale: p>
Pendant ce temps, des textures régulières dans OpenGL fonctionnent différemment et sont conçues pour une texturation réelle. Celles-ci ont les fonctions suivantes non partagées par des tampons de texture: P>
Résumé de ces points, vous pouvez dire que les textures normales sont bonnes pour la texturation réelle, tandis que les textures tampon sont bonnes comme une méthode de passage dans des tableaux de valeurs brutes. P>
Pour résumer ce que Christian a déclaré: les TBO sont pour des utilisations avancées. Pour ce que vous appelez habituellement une "texture" (c'est-à-dire une image), utilisez Glgentextures & CO.