Ir al contenido


Foto

Obtener pantalla de juegos mediante OpenGl


  • Por favor identifícate para responder
3 respuestas en este tema

#1 Dante

Dante

    Advanced Member

  • Miembros
  • PipPipPip
  • 89 mensajes

Escrito 08 diciembre 2016 - 02:03

Hola, hace tiempo "omar73rnr" habrio varios temas sobre la captura de imagen de juegos y no tuvieron solucion:
http://delphiaccess....pantalla-en-w7/
http://delphiaccess....turar-pantalla/

en estos momentos es posible mediate las librerias de Opengl realizar esto?


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 09 diciembre 2016 - 10:37

Prueba lo siguiente:


delphi
  1. procedure CapturarPantalla;
  2. var
  3. pbuf: pointer;
  4. y: integer;
  5. bmp: TBitmap;
  6. p1, p2: pointer;
  7. begin
  8. glReadBuffer(GL_FRONT);
  9. GetMem( pbuf, pnScene.Width * pnScene.Height * 4);
  10. glReadPixels( 0, 0, pnScene.Width, pnScene.Height, GL_RGBA, GL_UNSIGNED_BYTE, pbuf);
  11.  
  12. bmp := TBitmap.Create;
  13. bmp.PixelFormat := pf32bit;
  14. bmp.Width := pnScene.Width;
  15. bmp.Height := pnScene.height;
  16.  
  17. for y := 0 to (pnScene.Height -1) do
  18. begin
  19. p1 := bmp.ScanLine[y];
  20. p2 := pointer( integer(pbuf)+ (y * bmp.Width * 4));
  21. CopyMemory( p1, p2, bmp.Width * 4);
  22. end;
  23.  
  24. bmp.SaveToFile( 'c:\test\temp.bmp');
  25. bmp.Free;
  26. FreeMem( pbuf);
  27. end;

Nota: pnScene es un panel en este caso.

 

Saludos.


  • 0

#3 Dante

Dante

    Advanced Member

  • Miembros
  • PipPipPip
  • 89 mensajes

Escrito 09 diciembre 2016 - 12:11

Sigue saliendo en negro


delphi
  1. type
  2. Scence = record
  3. Width : DWORD;
  4. Height : DWORD;
  5.  
  6. var
  7. pnScene: Scence;
  8.  
  9.  
  10. pnScene.Width :=GetSystemMetrics(SM_CXSCREEN);
  11. pnScene.Height := GetSystemMetrics(SM_CYSCREEN);

, explicame vie lo de pnScene yo lo asigne a el el tamaño de monitor, no se si asi estara bien


  • 0

#4 Dante

Dante

    Advanced Member

  • Miembros
  • PipPipPip
  • 89 mensajes

Escrito 12 diciembre 2016 - 03:10

Al parece segun lo q comentan en este sitio https://www.experts-...answer39667651 no se puede tirar una foto a un juego sin inyectar una dll en el proceso pues OpenGL no es multihilo, jejje alguna solucion para esto


  • 0