2011-06-08 16 views
7

El SuperBible de OpenGL trata sobre los objetos del búfer de textura, que son texturas formadas a partir de datos dentro de las VBO. Parece que hay beneficios al usarlos, pero todos los ejemplos que he encontrado crean texturas regulares. ¿Alguien tiene algún consejo sobre cuándo usar uno sobre el otro?¿Objetos de memoria intermedia o texturas regulares?

+0

Para resumir lo que dijo Christian: TBO son para usos avanzados. Para lo que generalmente llamas una "textura" (es decir, una imagen), usa glGenTextures & co. – Calvin1602

Respuesta

8

Según el extension registry, los búferes de texturas son solo unidimensionales, no pueden filtrarse y deben accederse accediendo a los texels explícitos (por índice), en lugar de a las coordenadas de textura de punto flotante normalizadas [0,1]. Por lo tanto, no son realmente una sustitución de texturas regulares, sino de matrices grandes y uniformes (por ejemplo, matrices de pelado o datos por instancia). Tendría mucho más sentido compararlos con los almacenamientos intermedios uniformes que con las texturas normales, como el here.

EDIT: Si desea utilizar los datos de VBO para las texturas 2D regulares filtradas, no obtendrá una copia de datos (mejor realizada mediante PBO). Pero cuando solo quieres acceso simple a los datos de VBO y los atributos no serán suficientes para esto, entonces un buffer de textura debería ser el método de elección.

EDIT: Después de comprobar el capítulo correspondiente en el SuperBible, he encontrado que en la mención un lado, que los tampones de textura son siempre 1-dimensional y se accede por las compensaciones de número entero Texel discretas, pero por otro lado no logran mencionar explícitamente la falta de filtrado. Me parece que los publicitan más o menos como texturas que solo obtienen sus datos de los buffers, lo que explica la pregunta del OP. Pero como se mencionó anteriormente, esta es la comparación equivocada. Los búferes de texturas solo proporcionan una forma de acceder directamente a los datos del búfer en shaders en forma de un conjunto simple (aunque con un tipo de elemento ajustable), no más (lo que los hace inútiles para el texturizado regular) pero tampoco menos (siguen siendo una gran característica)

+0

Esto es completamente incorrecto. Esa exension admite texturas 1d, 2d y 3d –

+0

@VJo No, su comentario es incorrecto. Lea la especificación de extensión vinculada para obtener más información. Quizás estás estropeando texturas intermedias con PBO. –

+0

@VJo: 'Las texturas de búfer son matrices unidimensionales de texels' y también' Las texturas de búfer no admiten mipmapping, búsquedas de textura con coordenadas de textura de punto flotante normalizadas y filtrado de texturas de ningún tipo'. Y, por cierto, es parte de OpenGL 3.1+: http://www.opengl.org/sdk/docs/man3/xhtml/glTexBuffer.xml – Calvin1602

0

Las texturas regulares se usan cuando las VBO no son compatibles.

+0

Esto está mal ya que los almacenamientos intermedios de texturas no proporcionan las características habituales de las texturas normales. –

+1

No puedo decir que la respuesta sea incorrecta, ya que las texturas regulares siempre se pueden usar para emular el comportamiento de TexBO cuando la función (extensión) no es compatible con el hardware. – rotoglup

+0

@rotoglup Ok, si se ve desde ese punto, probablemente tengas razón. –

Cuestiones relacionadas