Page 1 sur 2
					
				Comment copier le buffer vidéo dans un sprite?
				Publié : mer. 14/déc./2005 12:44
				par CameleonTH
				Alor voila je voudrais savoir comment copier le buffer vidéo dans un sprite (ou une image) car je chercher un commande comme BackBuffer() comme dans Blitz3D mais j'ai pas trouver alor si quelqu'un a la réponse sa m'arangerais.
THX d'avance
			 
			
					
				
				Publié : mer. 14/déc./2005 13:48
				par Dr. Dri
				PB travaille déjà en double buffering... Je vois pas l'intérêt
Dri
			 
			
					
				
				Publié : mer. 14/déc./2005 13:53
				par CameleonTH
				C'est pour faire un chti effet de motion blur en temp réel come  en Blitz3d.
Ou alor dis moi commen faire pour réaficher le buffer précedant.
			 
			
					
				
				Publié : mer. 14/déc./2005 13:57
				par lionel_om
				Bah avant chaque flipBuffer(), tu sauvegarde le sprite. et tu le réaffiche deux boucles après, et tu rajoute par dessus ce que tu veux ...
			 
			
					
				
				Publié : mer. 14/déc./2005 14:02
				par Backup
				en prenant une "photo" 
rien ne t'empeche de copier le sprite dans une image buffer  
 
  
  ; Code par DRAC !  
   Procedure    CopySpriteToImage(Sprite,   ImageID   )
  Hdc=   StartDrawing   (   SpriteOutput   (Sprite))
  bmp.BITMAP\bmWidth=   SpriteWidth   (Sprite)
  bmp\bmHeight=   SpriteHeight   (Sprite)
  bmp\bmPlanes=1
  bmp\bmBitsPixel=   GetDeviceCaps_   (Hdc,  #BITSPIXEL  )
  bmp\bmBits=   DrawingBuffer   ()
  bmp\bmWidthBytes=   DrawingBufferPitch   ()
  hBmp=   CreateBitmapIndirect_   (bmp)
     StopDrawing   ()
     UseImage   (   ImageID   )
     StartDrawing   (   ImageOutput   ())
     DrawImage   (hBmp,0,0)
     StopDrawing   ()
     DeleteObject_   (hBmp)
   EndProcedure   
 
 
			 
			
					
				
				Publié : mer. 14/déc./2005 14:03
				par lionel_om
				Oula
Juste avec un : 
ca suffit pas ??
 
			 
			
					
				
				Publié : mer. 14/déc./2005 15:06
				par Fred
				GrabSprite() est plus appriorié ici (et beacoup plus rapide).
			 
			
					
				
				Publié : mer. 14/déc./2005 16:53
				par CameleonTH
				Je crois que vous avez pas bien compris ce ke je voulais faire.
Je veut copier le buffer vers un sprite un peu comme un screenshot mais en plus rapide et que sur le Screen.
Les seules qui ont compris c'est lionel_om et Fred bien sur. 
Et merci pour cette aide.
 
			 
			
					
				
				Publié : ven. 16/déc./2005 10:05
				par Mindphazer
				@CamelonTH : 
je suis allé sur ton site pour te faire plaisir  
 
Il est sympa....
Mais pitié, fais-moi plaisir à ton tour : corrige les fautes d'orthographe !!!!!
 
			 
			
					
				
				Publié : jeu. 06/avr./2006 13:09
				par Progi1984
				@CameleonTH :
as tu un code de tes réussites, cela m'interesserait vivement !
			 
			
					
				
				Publié : sam. 20/mai/2006 14:01
				par snobw
				Salut, cameleonTh
As-tu reussi à faire ce que tu voulais ?
Si oui je serai interressé.
En ce moment j'essai de le faire avec des API windows, 
mais sa marche pas (getdc,...)
			 
			
					
				
				Publié : sam. 20/mai/2006 22:02
				par CameleonTH
				Euh en faite depuis j'ai pas réessayer de faire cette effet car j'ai un peu lacher le PureBasic malgré que je l'utilise pour faire des petit prog, mai je l'ai lacher car en ce moment je suis en periode d'étude pour le BAC et j'essai d'apprendre le C++, alors voila.
			 
			
					
				
				Publié : dim. 21/mai/2006 6:11
				par Thyphoon
				Tient j'ai penser a toi ! en regardant sur Purearea je suis tombé sur un truc de BackBuffer... je me demande si ce n'est pas ça que tu voulais.
Voilà le lien: 
http://www.purearea.net/pb/CodeArchiv/G ... ndering.pb 
			 
			
					
				
				Publié : dim. 21/mai/2006 9:55
				par snobw
				Je viens de jeter un oeil sur ce truc.
C'est pas vraiment cela.
Mon objectif est en faite de faire une capture du bureau.
Cela sans passer par PrintEcran. En gros recréer une nouvelle fonction printscreen.
Mais je pense etre sur la bonne voix
GetDesktopWindow
GetDC 
BitBlt
ReleaseDC
je pense que ces api sont la clé.
Des que je trouve, je poste.
			 
			
					
				
				Publié : dim. 21/mai/2006 10:00
				par Guimauve
				Une procédure qui date un peu, je ne l'ai pas tester avec la V4.00.
Code : Tout sélectionner
Procedure ScreenShots(ImageID.l, Screenshot$, ScreenW.w, ScreenH.w)
    ; On capture les informations de l'écran actuelle
     srcDC = CreateDC_("DISPLAY", "", "", dm.DEVMODE)
     trgDC = CreateCompatibleDC_(srcDC)
     BMPHandle.l = CreateCompatibleBitmap_(srcDC, ScreenW, ScreenH)
     SelectObject_(trgDC, BMPHandle)
     BitBlt_(trgDC, 0, 0, ScreenW, ScreenH, srcDC, 0,0, #SRCCOPY)
     DeleteDC_(trgDC)
     ReleaseDC_(BMPHandle, srcDC)
     
     ; On dessine l'image
     CreateImage(ImageID, ScreenW, ScreenH)
     StartDrawing(ImageOutput(ImageID))
          DrawImage(BMPHandle, 0, 0)
     StopDrawing()
     
     SaveImage(ImageID, Screenshot$)
     
EndProcedure
Et pour les dimensions de la résolution de l'écran :
Code : Tout sélectionner
ScreenW = GetSystemMetrics_(#SM_CXSCREEN)
ScreenH = GetSystemMetrics_(#SM_CYSCREEN)
Si ça peut aider quelqu'un
A+
Guimauve