Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - KACHORRO

#46
Programación gráfica / Cargar Una Imagen En Una Surface Ya Creada
17 de Septiembre de 2005, 08:53:10 PM
 Hola.

Os cuento a ver si alguien me da una idea.

Estoy haciendo un mapa basado en una cuadricula, y muestro en pantalla cada vez sólo cuatro cuadros. (para ahorrar memoria).
Mi idea era ir sustituyendo cada cuadro por los nuevos cargandolos de disco.

En fin... que me lio, la idea básica es:

-cargar una imagen del disco durante el juego
-meterla en la memoria de una surface ya creada

¿o es mejor destruir la antigua y crear una nueva?
#47
Programación gráfica / Ya está solucionado
13 de Noviembre de 2002, 07:13:55 PM
                                Lo del unlock y el lock ... ¬¬

  No obstante, después de muchas investigaciones, pruebas visuales, cuelgues de windows... resulta que:

-Dado que uso un modo de 16 bits, el tipo de dato a apuntar videoMemory es WORD (o eso he creido yo)

Y ahora viene lo mejor... por arte de magia, por probar, por ya no saber que hacer, divido el dsdd.lPitch entre 2... y funciona.  :P

No tengo ni idea de por qué, y la verdad, no me importa. Después de dos días probando cosas, me conformo con la máxima de la programación (al menos para mi)  "SI FUNCIONA, ESTÁ BIEN"                                
#48
Programación gráfica / Un getpixel en DirectDraw 7
13 de Noviembre de 2002, 11:46:42 AM
                                Se me olvidó retocar el codigo para indicar que el puntero a memoria que tengo no es unsigned char como aparece en el código, si no que es int. También he probado con unsigned int sin éxito.                                
#49
Programación gráfica / Un getpixel en DirectDraw 7
13 de Noviembre de 2002, 11:41:18 AM
                                He implementado un getpixel para leer el color de un pixel dentro de una surface siguiendo el siguiente código:

unsigned char* videoMemory;
long pitch;

void lock()
{
   DDSURFACEDESC2 ddsd;
   ddsd.dwSize = sizeof(ddsd);
   back->Lock(0, &ddsd, DDLOCK_WAIT, 0);
   videoMemory = (unsigned char*)ddsd.lpSurface;
   pitch = ddsd.lPitch;
}

void unlock()
{back->Unlock(0);}

int getPixel(int x, int y)
{return(videoMemory[x + pitch * y]);}


  Aunque todo es correcto y compila, no funciona bien. No sé si puede ser debido al formato de color o a que no me coloco en el pixel correcto dentro de la surface... no sé, el caso es que tengo muchas dudas con el mapeado de memoria de una surface en función de su profundidad de color. Estoy usando un modo gráfico de 800x600x16 bits y las surfaces son creadas a partir de BMP's de 24bits.

  Gracias por adelantado por vuestra colaboración.                                





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.