Logo

¡Bienvenido a Stratos!

Acceder

Foros



El Bit Como Tamaño De Variable

Iniciado por nsL, 14 de Marzo de 2005, 05:57:07 PM

« anterior - próximo »

nsL

 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)  
Yo no muero hasta la muerte -

CoLSoN2

 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.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

nsL

 Pues tienes razon, lo de multiplos de 8 no se me habia ocurrido :P
Gracias por la ayuda!

Saludos!  B)  
Yo no muero hasta la muerte -

samsaga2

 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]






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.
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.