8
votes

Objets de tampon de texture ou textures régulières?

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?


1 commentaires

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.


3 Réponses :


8
votes

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 .

EDIT: 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.

EDIT: 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é. ).


6 commentaires

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 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 . 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?



0
votes

Les textures ordinaires sont utilisées lorsque VBO n'est pas pris en charge.


3 commentaires

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.



1
votes

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:

  • Les tampons de texture sont lus comme des textures, vous pouvez lire leur contenu à partir de chaque sommet à l'aide de TexEftch. C'est quelque chose que vous ne pouvez pas faire avec des attributs de sommet, car ceux-ci ne sont accessibles que sur une base par sommet.
  • Les textures de tampon peuvent être utiles comme alternative aux uniformes lorsque vous devez transmettre de grandes distributions de données. Les uniformes sont limités dans la taille, tandis que les textures tampon peuvent être de taille massive.
  • Les textures de tampon sont prises en charge dans les anciennes versions de OpenGL que les objets de tampon de stockage Shader (SSBO), ce qui les rend bon à utiliser comme retombe si les SSBO ne sont pas pris en charge sur un GPU.

    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:

    • Les textures ordinaires peuvent avoir des filtres appliqués à eux, de sorte que lorsque vous échantillonnez des pixels d'eux dans vos shaders, votre GPU interpolera automatiquement les couleurs à base de pixels à proximité. Cela empêche la pixélie lorsque les textures sont lourdées fortement, même si elles deviennent progressivement plus floues.
    • Les textures ordinaires peuvent utiliser des mipmaps, qui sont des versions de qualité inférieure de la même texture utilisées à des distances d'affichage ultérieures. OpenGL a intégré une fonctionnalité pour générer des mipmaps, ou vous pouvez fournir le vôtre. Les mipmaps peuvent être utiles pour la performance dans de grandes scènes 3D. Les mipmaps peuvent également aider à prévenir le scintillement dans des textures qui sont rendus plus loin.

      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.


0 commentaires