Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: killgates en 30 de Enero de 2016, 05:47:26 PM

Título: Dudas cómo usar glTexImage2d( )
Publicado por: killgates en 30 de Enero de 2016, 05:47:26 PM
Hola,

Esto del c++ me está enganchando  :D                8)
Tengo dudas de cómo utilizar la función glTexImage2d( )  .
No entiendo los datos de:
glTexImage2d(gl_texture2d, 0, "internal_format", ancho , alto , 0, "format" , "type", , datos de imagen);

Cómo se yo el tipo de internal format que tiene la textura?
Lo mismo con el format.
Y el type de datos?

Muchas Gracias
Título: Re:Dudas cómo usar glTexImage2d( )
Publicado por: killgates en 30 de Enero de 2016, 06:37:31 PM
Hola,

Me respondo a mi mismo en parte ..  :D
Si divido la profundiad en bits entre 3 tendré el internal format.

Faltaría el format ..         que el dato de la cabezera del fichero tga ya lo especifica    El más común gl_rgb?

Y el type cómo se sabe?


Título: Re:Dudas cómo usar glTexImage2d( )
Publicado por: Gallo en 01 de Febrero de 2016, 10:48:44 AM
el internal format representa tanto los canales de color como los bits que ocupa cada uno, por ejemplo GL_RGBA8 es para 4 canales de 8 bits, este internal format se corresponderá con el type GL_UNSIGNED_BYTE,  otro internal format seria GL_RG16F, este significaria 2 canales de color con un tamaño half-float (16 bits) y le corresponderia el type GL_FLOAT.   el format es solo los canales que tiene la imagen, es como el internal format pero sin la información de tamaño GL_RGBA32F => GL_RGBA, GL_RG16F => GL_RG.

También puedes usar los valores de format en internal format y dejar que el driver le ponga el tamaño, si no me equivoco siempre pondrá 8 bits por canal, pero yo te recomendaría especificar el internal format con el tamaño, simplemente me parece mas correcto.

el internal format mas común seria GL_RGB8 / GL_RGB  o  GL_RGBA8 / GL_RGBA   y GL_UNSIGNED_BYTE en ambos, es el formato en el que te vendrá un TGA, una cosa importante es que en el shader independientemente si el type es GL_UNSIGNED_BYTE o GL_FLOAT, el color siempre vendrá normalizado como float, los buffers (texturas) de 8 bits por canal contendrán valores entre 0.0 y 1.0 por canal, y los de 16 y 32 bits son las que pueden contener valores fuera de esos rangos, utilizados para casos en los que necesitas una mayor precisión como al guardar valores que no son colores (posición, normales) o imágenes hdri.
Título: Re:Dudas cómo usar glTexImage2d( )
Publicado por: killgates en 02 de Febrero de 2016, 04:23:58 PM
Hola, Gracias por responder,

Es decir..
Si al leer la cabezera del fichero tga. El valo bpp (profundiad de color) es de 24 , entonces se trata de un RGB8/RGB..
Ya que son 8 bits por canal = 8*3=24 ?

Si fuera bpp de 32.. Entonces se trataría de RGBA8/RGBA?
8*4 = 32?
Título: Re:Dudas cómo usar glTexImage2d( )
Publicado por: Gallo en 03 de Febrero de 2016, 09:52:17 AM
Cita de: killgates en 02 de Febrero de 2016, 04:23:58 PM
Hola, Gracias por responder,

Es decir..
Si al leer la cabezera del fichero tga. El valo bpp (profundiad de color) es de 24 , entonces se trata de un RGB8/RGB..
Ya que son 8 bits por canal = 8*3=24 ?

Si fuera bpp de 32.. Entonces se trataría de RGBA8/RGBA?
8*4 = 32?

Exactamente, y en ambos casos GL_UNSIGNED_BYTE
Título: Re:Dudas cómo usar glTexImage2d( )
Publicado por: killgates en 03 de Febrero de 2016, 02:39:38 PM
 :D