Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: sms al 04 logaritmo de 22 en 05 de Febrero de 2008, 03:48:47 PM

Título: ¿es verdad? (tema tamaño texturas)
Publicado por: sms al 04 logaritmo de 22 en 05 de Febrero de 2008, 03:48:47 PM
me han dicho que en los juegos, aunque las texturas esten comprimidas (.dds o el formato que sea) cuando la grafica las carga, en su memoria ocupan lo mismo q un .bmp o similar

¿es verdad esto?

bueno, esa era mi duda tonta gracias y un saludo :oops:
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: BeRSeRKeR en 05 de Febrero de 2008, 04:02:37 PM
Si no comprimes la textura en algún formato S3TC (http://en.wikipedia.org/wiki/S3TC) (y el hardware lo soporta), el tamaño será el mismo que la textura sin comprimir.

Saludos.
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: tamat en 05 de Febrero de 2008, 04:17:33 PM
las texturas comprimidas en dds se guardan comprimidas en las tarjetas (al menos en la mayoría de tarjetas que yo he probado), y no solo eso, sino que los accesos de lectura son mucho mas rapidos al no colapsar los buses, lo digo porque hice pruebas y el framerate se incrementaba mucho cuando usaba DDS
Título: Re: ¿es verdad? (tema tamaño texturas)
Publicado por: Tei en 05 de Febrero de 2008, 05:02:18 PM
De todos modos un BMP tiene compresión RLE. Asi que un BMP ocupara menos que una imagen "descomprimida".
Título: Re: ¿es verdad? (tema tamaño texturas)
Publicado por: BeRSeRKeR en 05 de Febrero de 2008, 06:52:46 PM
Cita de: "Tei"De todos modos un BMP tiene compresión RLE. Asi que un BMP ocupara menos que una imagen "descomprimida".
Pero en memoria de video se almacena descomprimida (que creo que es la duda que tiene sms) salvo que se comprima en algún formato S3TC en tiempo de carga.

Saludos.
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: [EX3] en 05 de Febrero de 2008, 08:24:57 PM
Cita de: "BeRSeRKeR"Si no comprimes la textura en algún formato S3TC (http://en.wikipedia.org/wiki/S3TC) (y el hardware lo soporta), el tamaño será el mismo que la textura sin comprimir.
Cita de: "tamat"Las texturas comprimidas en dds se guardan comprimidas en las tarjetas (al menos en la mayoría de tarjetas que yo he probado), y no solo eso, sino que los accesos de lectura son mucho mas rapidos al no colapsar los buses, lo digo porque hice pruebas y el framerate se incrementaba mucho cuando usaba DDS
Interesante, tomo nota :)

Salu2...
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: sms al 04 logaritmo de 22 en 05 de Febrero de 2008, 08:58:34 PM
o sea, que pasa como me han dicho pero si uso el formato .dds esto no ocurre, ahorrando memoria grafica y mejorando el rendimiento...

¿el formato dds tiene perdida de calidad?

¿hay algo mejor que el dds?

muchas gracias y un saludo
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: tamat en 05 de Febrero de 2008, 09:20:42 PM
DDS es un contenedor de distintos formatos, propuestos por distintas compañías, el problema es que no todas las tarjetas soportan todos, así que cuando un formato no es soportado pues se sube descomprimido.

Por otra parte todos los formatos que yo conozco tienen perdida de calidad, de hecho en la web de NVIDIA hay un plugin para photoshop que permite hacer un preview de cada formato.

Pero para mi las dos mejores cualidades de DDS son que permite (no obliga) contener los mipmaps (con lo que las cargas son mucho mas rapidas al no tener que generarlos en ejecucion) y que permite almacenar cubemaps (muy utiles cuando trabajas con shaders).
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: sms al 04 logaritmo de 22 en 05 de Febrero de 2008, 10:02:29 PM
pero entonces, ¿puedes usar tu propio formato de texturas? o tienes que usar por huevos el .dds si quieres tener esa "compresion" y ahorro de memoria...

madre mia, como se complican xD

gracias y salu2
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: misscelan en 05 de Febrero de 2008, 10:41:02 PM
Por ejemplo en OpenGL, una vez cargados los bytes que te de la gana dentro de "datos" (ya sea de un tga, png, jpg, etc...) defines la textura así


glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ancho, alto, 0, GL_RGB, GL_UNSIGNED_BYTE, datos);


Para pedir a OpenGL que te la comprima al pasarla a su memoria interna sin que tu tengas que hacer otra cosa, bastaría con esto:



glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB, ancho, alto, 0, GL_RGB, GL_UNSIGNED_BYTE, datos);


Si no me equivoco pasando GL_COMPRESSED_RGB (u otro como  GL_COMPRESSED_RGBA)  como formato interno, hace que automáticamente te la guarde comprimida en el caso de que tu hardware la soporte.

Espero haberte aclarado algo.

Un saludo
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: sms al 04 logaritmo de 22 en 05 de Febrero de 2008, 11:15:01 PM
Cita de: "misscelan"Por ejemplo en OpenGL, una vez cargados los bytes que te de la gana dentro de "datos" (ya sea de un tga, png, jpg, etc...) defines la textura así


glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ancho, alto, 0, GL_RGB, GL_UNSIGNED_BYTE, datos);


Para pedir a OpenGL que te la comprima al pasarla a su memoria interna sin que tu tengas que hacer otra cosa, bastaría con esto:



glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB, ancho, alto, 0, GL_RGB, GL_UNSIGNED_BYTE, datos);


Si no me equivoco pasando GL_COMPRESSED_RGB (u otro como  GL_COMPRESSED_RGBA)  como formato interno, hace que automáticamente te la guarde comprimida en el caso de que tu hardware la soporte.

Espero haberte aclarado algo.

Un saludo

joer, si que lo hace facil open gl ¿y todo automático? madre mia, creo q me va a gustar esto de aprender a programar jejeje aunque en el fondo no creo q sea "ala, 2 palabras y arreando!
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: tamat en 06 de Febrero de 2008, 12:07:13 AM
se supone que dentro de esa trama de bytes que le pasas a opengl ya hay toda la informacion que necesitas tal como tipo de compresion, tamaño de la imagen,etc. Por eso mola tanto DDS.
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: misscelan en 06 de Febrero de 2008, 10:03:59 AM
Poniéndolo como te comenté antes, te convierte "al vuelo" cualquier tipo de textura. Aunque se comenta por ahí que a parte de que puede repercutir en más tiempo de carga, dejar a opengl que haga la compresión por ti, te dará peores resultados de imagen.

Así que prueba ambos métodos "al vuelo" o cargándo unas ya comprimirdas con S3TC DDS y nos comentas.

Un saludo.
Título: ¿es verdad? (tema tamaño texturas)
Publicado por: sms al 04 logaritmo de 22 en 06 de Febrero de 2008, 10:38:27 AM
Cita de: "misscelan"Poniéndolo como te comenté antes, te convierte "al vuelo" cualquier tipo de textura. Aunque se comenta por ahí que a parte de que puede repercutir en más tiempo de carga, dejar a opengl que haga la compresión por ti, te dará peores resultados de imagen.

Así que prueba ambos métodos "al vuelo" o cargándo unas ya comprimirdas con S3TC DDS y nos comentas.

Un saludo.

de acuerdo, ya hechare mano de esos tutoriales de programar en c xDDD

es q empeze el otro dia y aun voy por el hola mundo y una ventana q te deja sumar :oops:  :oops:

gracias y salu2