Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Screenshots En Opengl

Iniciado por vicho, 09 de Enero de 2004, 09:58:10 PM

« anterior - próximo »

vicho

 eso, como logro hacer eso, si alguien tiene un link con algun tut o algun demo con codigo que lo haga le rogaria postearlo

de antemano gracias

ethernet


Tei

 En Quake es algo asi:


void SCR_ScreenShotTGA_f (void)
{
byte  *buffer;
char  tganame[255];
char  checkname[MAX_OSPATH];
int   i, c, temp;

//
// find a file name to save it to
//
sprintf (checkname, "%s/shots", com_gamedir);
Sys_mkdir (checkname);


sprintf( tganame,"telejano_000.tga");


for (i=0; i<=999; i++)
{
 tganame[11-2] = (i/100)%10 + '0';
 tganame[11-1] = (i/10 )%10 + '0';
 tganame[11-0] = (i    )%10 + '0';    

 sprintf (checkname, "%s/shots/%s", com_gamedir, tganame);
 if (Sys_FileTime(checkname) == -1)
  break; // file doesn't exist
}
if (i==999)
{
 Con_Printf ("SCR_ScreenShot_f: Couldn't create a TGA file\n");
 return;
 }

buffer = malloc(glwidth*glheight*3 + 18);

if (!buffer)
{
 Con_Printf("Not enough ram for screnshot\n");
 return;
}

memset (buffer, 0, 18);
buffer[2] = 2;  // uncompressed type
buffer[12] = glwidth&255;
buffer[13] = glwidth>>8;
buffer[14] = glheight&255;
buffer[15] = glheight>>8;
buffer[16] = 24; // pixel size

glReadPixels (glx, gly, glwidth, glheight, GL_RGB, GL_UNSIGNED_BYTE, buffer+18 );

// swap rgb to bgr
c = 18+glwidth*glheight*3;
for (i=18; i<c; i+=3)
{
 temp = buffer[i];
 buffer[i] = buffer[i+2];
 buffer[i+2] = temp;
}

COM_WriteFile (va ("shots/%s", tganame), buffer, glwidth*glheight*3 + 18 );

free (buffer);
Con_Printf ("Wrote %s\n", tganame);
}
// Tei - redone screenshots for more shots support






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.