Me estaba resultando bastante molesto el tema de capturar pantallas en Linux, así que me di una vuelta por el foro de Ogre a ver qué había al respecto. Resulta que es muy fácil de implementar, con Ogre::RenderTarget::writeContentsToFile(). Aquí les muestro cómo crear muy rápidamente un nombre aleatorio y guardar una captura de pantalla a jpg:
int rnd1, rnd2, rnd3;
rnd1 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));
rnd2 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));
rnd3 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));
String tmpname = "screenshot"+StringConverter::toString(rnd1)+StringConverter::toString(rnd2)+StringConverter::toString(rnd3);
win->writeContentsToFile(tmpname+".jpg") ;
Se aceptan sugerencias y mejoras.
int rnd1, rnd2, rnd3;
rnd1 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));
rnd2 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));
rnd3 = 0+(int)(9.0 * rand() / (RAND_MAX+1.0));
String tmpname = "screenshot"+StringConverter::toString(rnd1)+StringConverter::toString(rnd2)+StringConverter::toString(rnd3);
win->writeContentsToFile(tmpname+".jpg") ;
Se aceptan sugerencias y mejoras.
Buenas,
ResponderEliminarasí de primeras, podrías ahorrarte rnd2 y rnd3 multiplicando el número aleatorio por 999.0 en vez de 9.0. :)
saludos
Gracias! Estaba pensando sustituirlo por un arreglo para generar 4 o 5 dígitos, porque me parecía que 3 aún daban margen a colisión. Creo que esta idea es mejor.
ResponderEliminary usar Timestamp?
ResponderEliminarEsa es la solución óptima, pero no he buscado cómo hacerlo de forma portable.
ResponderEliminar