Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi OpenGL in TBitmap rendern? (https://www.delphipraxis.net/134554-opengl-tbitmap-rendern.html)

Najo 24. Mai 2009 19:35


OpenGL in TBitmap rendern?
 
Hallo!

Momentan render ich mit OpenGL auf ein TCustomPanel. Dieses flackert jedoch ziemlich und aus diesem Grund möchte ich meine Scene zuerst in ein TBitmap Objekt rednern und dann via Canvas.Draw(...) in einen Stück zeichnen.

Probiert habe ich es wie folgt:

Delphi-Quellcode:
m_dc := m_bmp.Canvas.Handle;
m_rc := CreateRenderingContext(m_dc, [opDoubleBuffered], 32, 32, 0, 0, 0, 0);
ActivateRenderingContext(m_dc, m_rc);
Dies scheint jedoch nicht zu klappen. Weiß jemand warum es nicht so geht und / oder wie es richtig funktioniert?

Viele Dank
Najo

mr_emre_d 24. Mai 2009 21:09

Re: OpenGL in TBitmap rendern?
 
Wie es aussieht, zeichnest du es einfach auf die Form (Canvas.Draw..)

>>Warum nimmst du nicht einfach den Device Context deiner Form ?

Code:
GetDC();
GetWindowDC();
MfG

3_of_8 24. Mai 2009 21:46

Re: OpenGL in TBitmap rendern?
 
Panels gehen auch prima, wenn mans nicht auf die ganze Form zeichnen will.

mkinzler 24. Mai 2009 21:53

Re: OpenGL in TBitmap rendern?
 
Da würde ich aber eine PaintBox bevorzugen

Medium 24. Mai 2009 23:52

Re: OpenGL in TBitmap rendern?
 
Die jedoch keinen eigenen DC (bzw. kein eigenes Handle) hat, und daher gar nicht geht ;)

Najo 25. Mai 2009 19:49

Re: OpenGL in TBitmap rendern?
 
Hallo,

ich habe erst direkt auf einem Panel gezeichnet, dies flackerte jedoch start, so dass ich in ein Bitmap rendern wollte um dieses dann "in einem Rutsch" auf das Canvas zu zeichen. Ich habe jetzt jedoch den Grund für das Flackern gefunden. Es lag an WM_ERASEBKGND.

Vielen Dank für die Antworten
Najo


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz