Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: nsL en 14 de Marzo de 2005, 05:57:07 PM

Título: El Bit Como Tamaño De Variable
Publicado por: nsL en 14 de Marzo de 2005, 05:57:07 PM
 Hola!

Necesito crearme unas mascaras de bits para unas superficies en SDL. Lo suyo seria poner 1 o 0 por cada pixel, dependiendo de si pertenece a la imagen o es parte del color transparente (Es para tratar colisiones). Por poder puedo hacerlo con int pero me parece absurdo usar 4bytes (eran 4 no?) por pixel cuando solo necesito un bit, o hacerlo con BYTE.
Tb he leido por ahi que para acceder a los bits puede ser un problema añadido porq la longitud minima que acceden los procesadores suele ser la palabra e intentar acceder al bit "n" supone mas computo de cpu.

¿Q me recomendais?

Saludos!  B)  
Título: El Bit Como Tamaño De Variable
Publicado por: CoLSoN2 en 14 de Marzo de 2005, 06:03:52 PM
 si te restringes a imágenes de tamaño múltiplo de ocho puedes usar bytes (un byte = 8 pixeles), y utilizar los operadores de bits para acceder a ellos individualmente. ¿Si es más costoso para la CPU? Para acceder a ellos quizá, pero si es para colisiones por pixel, puedes hacer chequeos de ocho en ocho pixeles en fila (operando byte a byte, o más si usas un tipo de dato mayor) y ahí recuperas. Además ocuparían 8 veces menos memoria.
Título: El Bit Como Tamaño De Variable
Publicado por: nsL en 15 de Marzo de 2005, 10:27:50 AM
 Pues tienes razon, lo de multiplos de 8 no se me habia ocurrido :P
Gracias por la ayuda!

Saludos!  B)  
Título: El Bit Como Tamaño De Variable
Publicado por: samsaga2 en 15 de Marzo de 2005, 11:37:30 AM
 Para colisiones lo mejor es usar bits (empaquetandolos en unidades de un byte) asi luego para testear si dos sprites han colisionado es facil (y MUY rapido) hacerlo a vase de ANDs.

2d collision tutorial [PDF]