Comment copier le buffer vidéo dans un sprite?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Comment copier le buffer vidéo dans un sprite?

Message 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
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

PB travaille déjà en double buffering... Je vois pas l'intérêt

Dri
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message 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.
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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 ...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

en prenant une "photo"
rien ne t'empeche de copier le sprite dans une image buffer :D



; 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
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Oula
Juste avec un :

Code : Tout sélectionner

grabiteSprite(#Pb_Any, 0, 0, ScreenWidth(), ScreenHeight())
ca suffit pas ??
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

GrabSprite() est plus appriorié ici (et beacoup plus rapide).
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message 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. :D

Et merci pour cette aide.
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Message par Mindphazer »

@CamelonTH :
je suis allé sur ton site pour te faire plaisir :D
Il est sympa....
Mais pitié, fais-moi plaisir à ton tour : corrige les fautes d'orthographe !!!!!
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

@CameleonTH :
as tu un code de tes réussites, cela m'interesserait vivement !
snobw
Messages : 26
Inscription : ven. 05/nov./2004 12:58

Message 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,...)
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message 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.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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
snobw
Messages : 26
Inscription : ven. 05/nov./2004 12:58

Message 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.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message 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
Répondre