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)
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.
Pues tienes razon, lo de multiplos de 8 no se me habia ocurrido :P
Gracias por la ayuda!
Saludos! B)
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]