<div dir="ltr">Hola!<div><br></div><div>Bueno, he descubierto una forma de hacerlo, pero no es ni de lejos tan sencilla como la manera de SDL 1.2, te dejo unas líneas de código y explico:</div><div><br></div><div><div>    Uint32* pixels=new Uint32[DEF_HEIGHT*DEF_WIDTH];</div>
<div>    SDL_RenderReadPixels(renderer,NULL,0,pixels,DEF_WIDTH*4); //Defino el pitch como la anchura x 4 porque estoy usando una profundidad de 32 bits...</div><div>    SDL_Surface* screen= SDL_CreateRGBSurfaceFrom(pixels,DEF_WIDTH,DEF_HEIGHT,32,DEF_WIDTH*4,0,0,0,0);</div>
<div>    SDL_SaveBMP(screen,"pantallazo.bmp");</div><div>    SDL_FreeSurface(screen);</div><div>    delete[] mypixels;</div></div><div><br></div><div>Lo primero de todo, la altura y anchura de la ventana están almacenadas en las constantes (o macros, si lo prefieres) DEF_HEIGHT y DEF_WIDTH y trabajamos con una profundidad de color de 32 bits, y nuestro SDL_renderer es la variable renderer.</div>
<div>En la primera línea de código se crea un puntero y le asignamos dinámica memoria para almacenar la información de los píxels del contexto de renderizado.</div><div>Se usa la función SDL_RenderReadPixels para volcar toda la información de los píxels actuales del renderer en el puntero pixels.</div>
<div>Se crea una nueva SDL_Surface con SDL_CreateRGBSurfaceFrom, pasándole la información almacenada en pixels.</div><div>Después guardamos la imagen bmp con SDL_SaveBMP y liberamos la memoria que ya no necesitamos.</div>
<div><br></div><div>Complicadillo pero funciona ;)</div><div><br></div><div>Un saludo!</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">El 17 de noviembre de 2013 11:55, Hl3 <span dir="ltr"><<a href="mailto:halowin3@gmail.com" target="_blank">halowin3@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hola.<br>
Tengo un programa que hace unas cosas mas o menos bonitas con un par de imagenes cargadas.<br>
Con la version 1.2 de SDL guardaba el resultado con SDL_SaveBMP que lleva como argumento un surface,pero con la version 2 no se como hacerlo, pues lo que tengo en pantalla está en el render y no en un surface.<br>
<br>
He probado con SDL_GetWindowSurface( win ), pero el resultado no es lo que yo pensaba.<br>
<br>
Si alguien me puede dar una pista ......!!!<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br></div>