Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sdl_imagefilter ¿cómo Se Utiliza?

Iniciado por J_F_NASH, 23 de Diciembre de 2005, 12:36:36 PM

« anterior - próximo »

J_F_NASH

 Apenas explican nada en el .doc.
No entiendo que parámetros he de pasarle a la función:
 SDL_imageFilterAdd (unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, int length);

¿Podéis poner un ejemplo?.

Gracias de antemano.

S2.

BeRSeRKeR

 No tengo ni pajolera idea de SDL pero poniéndonos a especular diría que Src1 es un puntero a un array de pixels, al igual que Src2. Dest es un puntero a un buffer de pixels donde se almacenará el resultado del filtro y length me imagino que será la longitud de los 3 buffers que en teoría deben ser iguales en tamaño.

Así que SDL_imageFilterAdd lo que hará será ir sumando las componentes de los pixels de Src1 y Src2 e irá almancenando el resultado en el buffer Dest. Me imagino que también truncará la suma a 255, ya sabes, para no sobrepasar el rango [0,255].

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

dracks

 Yo tampoco lo he usado, pero diria que, es como ha dicho BeRSeRKeR, con una diferencia, le pones la direccion hacia la imagen, y no el vector de pixels....

la verdad no tengo ni idea, pero con lo que estoy aprendiendo de C, char *Src1 normalmente es una string, normalmente, no, siempre, lo que seguramente la string no la tengas que poner como &nombre_estring.... pero no estoy convencido...


Suerte!
iempo: dimension del universo en el que vivimos que se caractiza por el hecho que el ser humano sea incapaz de conocer...

senior wapo

 Es un blend aditivo, src1 y src2 son punteros a las tiras de pixeles a mezclar, y dst el area de memoria donde quieres guardar el resultado. length es la cantidad de pixeles consecutivos a mezclar. Tienes que llamar a la función por cada linea horizontal de las imagenes a mezclar.

No lo he usado en la vida, pero aparte de que los nombres de función y parámetros son bien claros, unos segundos en el google hacen milagros (si sabes inglés).  El primer link que salía tenía todas las funciones de la librería.

En general SRC es abreviatura de origen, y DST de destino.

zupervaca

 http://shinh.skr.jp/d/SDL_imageFilter.d

Citar//  SDL_imageFilterAdd: D = saturation255(S1 + S2)
    int SDL_imageFilterAdd(Uint8 *Src1, Uint8 *Src2, Uint8 *Dest, int length);

En pocas palabras suma todos los bytes de Src1 y Src2, los limita a 255 y los va metiendo en Dest, no importa si es o no una imagen y no hace falta hacerlo línea por línea ya que las imágenes se guardan de forma lineal a no ser que sdl soy torcido y lo líe todo. Osease lo que dijo Ber.

senior wapo

 Lo de línea a línea lo digo porque:

A ) Una superficie puede ser una subarea de otra (por ejemplo una imagen que tiene 20 frames de un sprite). El ancho de tu subarea no coincide con la distancia entre un pixel y el inferior, si lo haces del tirón sobreescribes fuera.

B ) El orden de scanlines puede ser de abajo a arriba (como la estructura de un BMP en disco y ciertos DCs de windows). Es secuencial sólo para los pixels de su scanline, el siguiente pixel está en realidad mas atrás en memoria (ancho_scanline * BPP * -1).

C ) Llevo varias semanas liado con código similar en Allegro que si que necesita necesariamente ir línea a línea, asi que, la costumbre.

D ) Ninguna de las anteriores.






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.