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?
Respuesta
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)
Esto es completamente incorrecto. Esa exension admite texturas 1d, 2d y 3d –
@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. –
@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
Las texturas regulares se usan cuando las VBO no son compatibles.
Esto está mal ya que los almacenamientos intermedios de texturas no proporcionan las características habituales de las texturas normales. –
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
@rotoglup Ok, si se ve desde ese punto, probablemente tengas razón. –
- 1. Cómo desenlazar la textura de una memoria intermedia de trama
- 2. ¿Se necesita más memoria intermedia?
- 3. Mostrar número de memoria intermedia actual
- 4. Liberar texturas (objetos GLKTextureInfo) asignados por GLKTextureLoader
- 5. Longitud máxima de memoria intermedia para sendto?
- 6. ¿Cuánta memoria intermedia tienen NetworkStream y TcpClient?
- 7. vim: mover a la memoria intermedia?
- 8. ¿Cómo puedo reasignar un número de memoria intermedia en VIM?
- 9. Vim: Cambio de los números de memoria intermedia
- 10. Implementación segura de subprocesos de la memoria intermedia circular
- 11. Escribir datos de textura en la memoria intermedia de profundidad
- 12. Múltiples búferes lógicos en una memoria intermedia de trama real
- 13. WebGL - lectura de los datos de píxeles de rendir memoria intermedia
- 14. Desactivar el almacenamiento en memoria intermedia de salida
- 15. ¿Cómo renderizar objetos Framebuffer en texturas de múltiples muestras?
- 16. Vídeo HTML5: aborto forzado del almacenamiento en memoria intermedia
- 17. Cómo usar std :: string con asio :: memoria intermedia()
- 18. Problemas con GLUtils.texImage2D y Alpha en Texturas
- 19. de hash sin tener toda la memoria intermedia en la memoria a la vez
- 20. Hadoop: fusión intermedia fallida
- 21. Asignación de texturas OpenGL
- 22. Expresiones regulares de Python O
- 23. Almacenamiento en memoria caché de objetos regex compilados en Python?
- 24. Análisis de memoria de objetos en .NET
- 25. WebGL y texturas rectangulares (potencia de dos)
- 26. LWJGL Texturas y cadenas
- 27. ABAP: sincronización de objetos de memoria compartida
- 28. Reproducción de un sonido de una memoria intermedia generada en una aplicación de Windows 8
- 29. JNI objetos creación y gestión de memoria
- 30. Dapper mapeo mapeo intermedia
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