Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Color De Una Superficie

Iniciado por javiel, 15 de Agosto de 2004, 05:06:08 PM

« anterior - próximo »

javiel

 Hola a todos:

Estoy intentando colocar un color a una superficie creado con

SDL_CreateRGBSurface

y tengo que pasarle los parámetros Uint32 Rmask, Uint32 Gmask, Uint32Bmask, Uint32 Amask. El problema es que no se que es lo que tengo que poner para que me use un color. Pongo esto:    

rmask = 0xff000000;    
gmask = 0x00ff0000;  
bmask = 0x0000ff00;  
amask = 0x000000ff;

y me sale el cuadrado en negro. Si cambio lo que pone ahí, siempre me sale en negro, así que no se como usarlo.

¿alguien me puede ayudar?

gracias a todos
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

Minos

 Segun he visto por google puede que tengas problemas con esto:

#if SDL_BYTEORDER == SDL_BIG_ENDIAN
static const Uint32 r_mask = 0xFF000000;
static const Uint32 g_mask = 0x00FF0000;
static const Uint32 b_mask = 0x0000FF00;
static const Uint32 a_mask = 0x000000FF;
#else
static const Uint32 r_mask = 0x000000FF;
static const Uint32 g_mask = 0x0000FF00;
static const Uint32 b_mask = 0x00FF0000;
static const Uint32 a_mask = 0xFF000000;
#endif


big endian y little endian definen el orden de los bits dentro de la memoria. saludos

javiel

 si ya, yo tb lo he visto, pero no se como utilizarlo. Yo lo que creo es que

r_mask es el valor de color rojo
g_mask del verde
b_mask el azul

Supongo que poniendo los valores RGB, la superficie que se crea es de ese color.

La verdad que no se si lo que acabo de poner es verdad, pq no entiendo exactamente para que sirve.

El color RGB del rojo (en HTML) por ejemplo es el FF0000

Alguien podría poner un ejemplo de como sería el rojo utilizando la función SDL_CreateRGBSurface???


gracias
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

Zaelsius

 No tengo idea de SDL, mirando en Google llego a la conclusión de que la superficie siempre va a salir negra, y que las máscaras de color están ahí por el tema de la ordenación de bytes y componentes RGB dentro de cada palabra de 32bits.

En OpenGL las texturas son RGBA, por eso en el ejemplo de Minos(que es el de la ayuda de SDL) se hace de esa manera. Pero a alguien le puede interesar alterar el orden de los bytes para cualquier cosa.. así que esa será la razón de ser de esos parámetros.

Para pintar la superficie accederias al miembro ->pixels de SDL_Surface*, sin olvidar de hacer el lock/unlock si es una superficie en memoria hardware.


Lessman


vicho

 es poco claro lo que quieres hacer pero bueno tratemos de entender
si lo que quieres es pintar una surface con un color, bueno puedes hacerlo con putpixel, pero SDL trae una funcion que te puede simplificar la vida

SDL_FillRect

http://sdldoc.csn.ul.ie/sdlfillrect.php

esa es su documentacion a mi parecer si eso es lo que quieres esta mas que claro como usarla

suerte

Pogacha

 No conozco el sdl, pero supongo que una surface es como las de dx, o un canvas de windos, un lugar donde puedes dibujar, y rmask, bmask y mask en general es la mascara para cada color (solo sirven para definir el orden de los colores, la cantidad de bits por colores ( antes habia  mask y shift (mascara y desplazamiento) ) ). No entiendo como puede andar sin el shift pero bueno (talvez la funcion los calcule automaticamente).






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.