SoloCodigo

Programación Específica => Programación de Videojuegos => OpenGL => Mensaje iniciado por: Karkayu en Lunes 24 de Marzo de 2008, 00:02

Título: Capturar Pantalla
Publicado por: Karkayu en Lunes 24 de Marzo de 2008, 00:02
Hola a todos:

A ver si alguno puede orientarme. Necesito implementar la típica opción de que, al pulsar una tecla, se me vuelque la escena que se esta visualizando en un fichero .jpg (o .bmp) ¿Como lo hacéis vosotros? ¿existe alguna librería para ello?

Yo habia pensado en volcar el contenido del framebuffer, pero me genera archivos  .raw y yo necesito algo mas estandar.

Uso C y Glut, bajo Linux ¿Alguna idea?

Un saludo
Título: Re: Capturar Pantalla
Publicado por: su - en Lunes 24 de Marzo de 2008, 17:12
Hay mas de una forma (como usar SDL).
Este tutorial te ayudara. (http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=10)
Título: Re: Capturar Pantalla
Publicado por: Karkayu en Martes 25 de Marzo de 2008, 11:55
Cita de: "su -"
Hay mas de una forma (como usar SDL).
Este tutorial te ayudara. (http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=10)
Gracias por tu respuesta!!!  B)

El tutorial ese ya lo había visto (visito mucho esa página), pero mi intención es no usar SDL. Me han comentado que existen unas librerías llamadas ¿Corona? que sirven para lo que quiero hacer. Sin embargo, no he encontrado mucho sobre el tema. ¿Alguien sabe algo?

De todas formas, y dado ando unpoco excaso de tiempo y que la aplicación solo se va a ejecutar en ordenadores con X-Windows, estoy viendo que terminare por hacer una chapuza (tipo llamada al comando XWD con system o algo similar)  <_<

Un saludo y gracias otra vez
Título: Re: Capturar Pantalla
Publicado por: Karkayu en Jueves 27 de Marzo de 2008, 10:32
Ya esta resuelto y de una forma mas o menos correcta  :)

Para ello he usado la librería netpbm que viene ya instalada en linux (si no esta instalada usas el apt-get o el gestor de paquetes que use tu distro).

Luego, para capturar la pantalla, construimos una funcion que realice llamas con system de la siguiente forma:

xwd -root -screen -out captura  //Obtenemos formato grafico nativo .xwd
xwdtopnm captura > captura.pnm //Pasamos a pnm
pnm2png captura.pnm > captura.png //Obtenemos un formato mas estandar .png


Aparte habría que controlar que cada captura tuviese un nombre diferente (añadiendole al final un numero pej) y borrar los ficheros .xwd y .pnm que se crean durante el proceso.

Con este método podemos capturar en cualquier escritorio X-Windows

Un saludo