¿Cuál es la diferencia entre las dos funciones? ¿Alguna diferencia de rendimiento?Diferencia entre la función glTexSubImage y glTexImage en OpenGL
Gracias ..
¿Cuál es la diferencia entre las dos funciones? ¿Alguna diferencia de rendimiento?Diferencia entre la función glTexSubImage y glTexImage en OpenGL
Gracias ..
Usted crear una textura usando glTexImage
, y luego actualización de sus contenidos con glTexSubImage
. Cuando actualiza la textura, puede actualizar toda la textura, o simplemente un sub-rectángulo de la misma.
Es mucho más eficiente crear una textura y actualizarla que crearla y borrarla repetidamente, por lo que en ese sentido si tiene una textura que desea actualizar, siempre use glTexSubImage
(después de la creación inicial).
Pueden aplicarse otras técnicas para las actualizaciones de texturas. Por ejemplo, consulte este artículo en texture streaming para obtener más información.
(Originalmente, este post sugirió el uso de glMapBuffer
actualizaciones textura - véase la discusión más adelante).
Las funciones gl con "sub" en el nombre no se limitan a las dimensiones de potencia-de-2. Como señala Gavinb, debe usar la variante no secundaria para establecer las dimensiones generales, pero no estoy de acuerdo en que llamar a la variante no secundaria sea más lento que usar "sub" para las actualizaciones: la GPU es aún puede sobrescribir la textura existente en su lugar siempre que use la misma ID de textura.
bueno, es posible, pero ¿verdad? Por lo menos, necesita verificar que todos los parámetros de TexImage sean aún compatibles con los anteriores, para saber si la asignación sigue siendo adecuada. Señálalo, esto no está en cuestión para la SubTextura. Además, el poder de dos no es muy relevante, ya que es un requisito para soportar texturas de NPOT en GL ahora. – Bahbar
+1, pero no estoy de acuerdo con su última frase. Generalmente no puedes mapear texturas. Tienden a almacenarse en formato no lineal en el lado de la GPU. así que ... Si haces la carga (a un Objeto de Amortización) antes de llamar a SubTextura, obligas a la GPU a copiar/hinchar la carta. No necesariamente una ganancia neta. – Bahbar
@Bahbar Eso es muy interesante. Entonces, ¿cuál es la forma más rápida de actualizar una textura a partir de datos de imagen en la memoria principal? Simplemente llame a 'glTexSubImage2D' directamente? IIRC era uno de mis libros que recomendaba 'glMapBuffer' para hacer una transferencia de DMA. – gavinb
Pensé que había creado texturas con glTexImage, no glTexSubImage. – genpfault