Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: [EX3] en 01 de Enero de 1970, 01:00:00 AM

Título: ScreenShoots con DirectDraw
Publicado por: [EX3] en 01 de Enero de 1970, 01:00:00 AM
                                Nas a todos...

Estoy intentando hacer una funcion de ScreenShoot, para hacer capturas en un juego que usa DirectDraw. He buscado pero no he visto ninguna funcion que guarde el contenido de una superficie en un archivo de disco. ¿Alguien sabe alguna foma de realizar esta operacion?

Salu2...

[EX3]
_________________
...:::DX_Lib32.DLL - Libreria ActiveX de funciones estilo Div2 con la potencia de DirectX. Nunca programar con DirectX fue tan facil. :::...

[ Este Mensaje fue editado por: [EX3] el 2002-07-19 16:22 ]                                
Título: ScreenShoots con DirectDraw
Publicado por: NeLo en 01 de Enero de 1970, 01:00:00 AM
                                Creo recordar que se llama D3DXSaveSurfaceToFile(...)

Lo que no se es porqué le pondrian este nombre xDD
                               
Título: ScreenShoots con DirectDraw
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Ahí va mi codigo para grabar pantallas:
bool CXVideo::GrabarPantalla(CXString &nombre)
{

   LPDIRECT3DSURFACE8 lpSurface = NULL;DWORD w,h;RECT *r,rt;

   // En modo ventana, debemos reservar memoria para TODA la pantalla
   
   if(m_Windowed) {
      w=m_InformacionMode.Width;
      h=m_InformacionMode.Height;
      POINT p;p.x=p.y=0;
      ClientToScreen(m_HWND,&p);
      rt.left=p.x;
      rt.top=p.y;
      rt.right=p.x+Ancho()-1;
      rt.bottom=p.y+Alto()-1;
      r=&rt;
   }
   else {
      w=Ancho();
      h=Alto();
      r=NULL;
   }

   m_pd3dDevice->CreateImageSurface(w,h, D3DFMT_A8R8G8B8, &lpSurface);
   m_pd3dDevice->GetFrontBuffer(lpSurface);

   HRESULT hr=D3DXSaveSurfaceToFile(nombre,
      D3DXIFF_BMP,   // Formato
      lpSurface,
      NULL,   // Paleta
      r   // Rectángulo del area a grabar
      );

   if(hr!=D3D_OK) {
      EstablecerUltimoError(hr);
      Merlin.Debug(_T("CXVideo::GrabarPantalla"),*UltimoError());
   }
   lpSurface->Release();
   return (hr==D3D_OK);
}
                               
Título: ScreenShoots con DirectDraw
Publicado por: [EX3] en 01 de Enero de 1970, 01:00:00 AM
                                Pero Dracula, el juego lo estoy programando con DirectDraw y encima para rematar con Visual Basic xD

¿es que acaso se pueden combinar DirectDraw7 con Direct3D?

[ Este Mensaje fue editado por: [EX3] el 2002-07-19 21:55 ]                                
Título: ScreenShoots con DirectDraw
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Olvídate de DDraw y trabaja con D3D. ¡Es lo mismo si usas el formato de vértices para 2D! ¡Y muchísimo más potente!

Mira mi librería. Es 3D pero para hacer cosas 2D. Puedes rotar, escalar, utilizar transparencias. ¡Y muuuy fácil!                                
Título: ScreenShoots con DirectDraw
Publicado por: [EX3] en 01 de Enero de 1970, 01:00:00 AM
                                Tanta insistencia me esta haciendo reflexionar sobre el cambio de DD7 a D3D. Pero eso me acarrea unos pros y unos contras.

Pros:
La facilidad y "posibilidad" de aplicar los efectos de alphablending y rotacion, deshabilitados en DD7; El Z-Buffer, tb deshabilitado en DD7.

Contras:
Posiblemente no funcione en equipos que no tengan aceleradora o targeta grafica de mas de 4 megas; el tamaño de los sprites (si no me equivoco no se recomienda trabajar con tamaños de mas de 256x256); y por ultimo que me tocaria reprogramar todo el modulo grafico del proyecto, que aun asi mereceria la pena.

Si me exponeis mas ventajas de D3D sobre DD7 para el desarrollo de juegos 2D y las veo convincentes, posiblemente me convezca y me decida dar el paso a D3D.

P.D.: Visitar esta direccion: http://www.dxlib32.es.vg

Salu2...                                
Título: ScreenShoots con DirectDraw
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Pros:
Acceso a TODOS los efectos de las tarjetas.
Velocidad.
El tamaño no está limitado a 256x256, eso es la textura, y actualmente su límite se puede presuponer de 2048x2048.
Olvídate de las tarjetas con 4MB!!
Mayor Compatibilidad al no usar un sistema desfasado.                                
Título: ScreenShoots con DirectDraw
Publicado por: Depredator en 01 de Enero de 1970, 01:00:00 AM
                                No hay duda de que D3D te va a traer muxas ventajas amigo mio, pero también es verdad que no va a llegar a todo el mundo (aunque ya poca gente usa ordenadores tan desfasados). Tú mismo, aunque yo, si no te supone muxo esfuerzo, te aconsejo el D3D.

Un Saludo.

PD: Vaya palizón os he metido al JK!!! XD                                
Título: ScreenShoots con DirectDraw
Publicado por: [EX3] en 01 de Enero de 1970, 01:00:00 AM
                                Lo estado meditando y si, voy a dar el paso a D3D. Ahora solo me toca volver a empollarme las DirectX para comprender el funcionamiento de D3D, pero no creo ke me lleve mucho tiempo, espero xD.

De momento seguire con la beta 1 del proyecto con el soporte en DD7.

Salu2...

P.D.: Predatillo, mañana recoges los restos de Logan, ke tu eres el siguiente pal duelo con sable laser, ke la fuerza te abandone xD

[ Este Mensaje fue editado por: [EX3] el 2002-07-25 01:46 ]