bonjour les amis
je travaille avec glscene delphi ,je veux que faire une capture de mon scene et la sauvegarder sous forme d'image.s'il vous plait quelques idées peux m'aider
bonjour les amis
je travaille avec glscene delphi ,je veux que faire une capture de mon scene et la sauvegarder sous forme d'image.s'il vous plait quelques idées peux m'aider
regarde dans les sources de GLScene si tu vois quelque part glReadPixels qui permet de le faire, sinon tu le fais directement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 var Bitmap: TBitmap; begin Bitmap := TBitmap.Create; Bitmap.PixelFormat := pf32Bit; Bitmap.Width := ClientWidth; Bitmap.Height := ClientHeight; glReadPixels(0, 0, Bitmap.Width, Bitmap.Height, GL_RGBA, GL_UNSIGNED_BYTE, Bitmap.ScanLine[Bitmap.Height - 1]); end;
dans ton code vous utilisez glReadPixels malgré n'est pas défini dans glscene ? je l'ai essayé mais pas de résultat
glReadPixels est une fonction de OpenGL, pas de GLScene...comme GLScene encapsule l'API OpenGL dans un modèle orienté objet, il est "possible" qu'une des classe de GLScene propose la copie d'écran.
mais ce qui est bien avec OpenGL, c'est qu'à partir du moment ou il existe un contexte OpenGL initialisé quelque part dans le process (que ce soit avec GLScene ou autre) il est possible d'interagir avec lui.
la fonction est déclarée dans l'unité OpenGL qu'il suffit d'ajouter à la clause Uses et le code devrait fonctionner.
il peut ne pas compiler, provoquer une erreur ou retourner une image vierge, mais pas "pas de résultat"...
merci infiniment paul mais voila la solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 implementation uses Unit1, Unit2,GLGraphics,GLUtils; procedure TForm5.BitBtn1Click(Sender: TObject); var bm : TBitmap; bmp32 : TGLBitmap32; begin bmp32:=GLSceneViewer1.Buffer.CreateSnapShot; try bm:=bmp32.Create32BitsBitmap; try SavePictureDialog1.DefaultExt := GraphicExtension(TBitmap); SavePictureDialog1.Filter := GraphicFilter(TBitmap); if SavePictureDialog1.Execute then bm.SaveToFile(SavePictureDialog1.FileName); finally bm.Free; end; finally bmp32.Free; end; end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager