Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   synchronisieren zwischen GDI/OGL (https://www.delphipraxis.net/177145-synchronisieren-zwischen-gdi-ogl.html)

EWeiss 19. Okt 2013 12:03

synchronisieren zwischen GDI/OGL
 
Wie kann ich GDI und OGL so im einklang bringen das ich AV's bedingt
durch die Asynchronisation verhindern kann?

Wenn ich im resize meinen buffer verändere auf die neuen ausmaße aber
gleichzeitig im renderevent auf diesen zugreife dann krachts.
Ok ich verhindere den AV indem ich die kritischen stellen mit einer CriticalSection umgebe
ist eine lösung aber keine auf dauer.

Ist eine synchronisierung überhaupt möglich?
Ich kann den Buffer nicht sperren da er mit GDI Mitteln erstellt wird. (CreateDIBSection)
Es gäbe eine alternative gdipBitmapLockBits. Dadurch würde sich meine lib aber um 400KB vergrößern
da ich dann GDI+ einbinden müßte nur wegen zwei Funktionen.


gruss

Bernhard Geyer 19. Okt 2013 12:31

AW: synchronisieren zwischen GDI/OGL
 
Du darfst bei GDI-Ressourcen nur in dem Thread auf die Ressourcen zugreifen in dem das GDI-Objekt erstellt wurde.
Anders geht es nicht. Die Lösung wäre wenn du schon OGL (= OpenGL?) einsetze das du komplett auf GDI verzichtest.

EWeiss 19. Okt 2013 12:39

AW: synchronisieren zwischen GDI/OGL
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1232509)
Du darfst bei GDI-Ressourcen nur in dem Thread auf die Ressourcen zugreifen in dem das GDI-Objekt erstellt wurde.
Anders geht es nicht. Die Lösung wäre wenn du schon OGL (= OpenGL?) einsetze das du komplett auf GDI verzichtest.

Danke.. Ja das weiss ich.
Es ist aber nicht anders machbar da die Anwendung das resize auslößt.
Ich kann die API also nicht in meinem Thread einlagern.

Eine alternative für CreateDIBSection? In OpenGL ..Wäre Interessant ;)
Hat oder kennt da jemand was?

gruss

Bernhard Geyer 19. Okt 2013 13:13

AW: synchronisieren zwischen GDI/OGL
 
Sehe gerade das du das Problem schon 4 Jahre vor dir herschiebst: http://www.delphipraxis.net/129866-c...on-opengl.html.

Hast du schon mal die diskussionen nachverfolgt wenn du nach "CreateDIBSection OpenGL" googelst?

EWeiss 19. Okt 2013 13:17

AW: synchronisieren zwischen GDI/OGL
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1232517)
Sehe gerade das du das Problem schon 4 Jahre vor dir herschiebst: http://www.delphipraxis.net/129866-c...on-opengl.html.

Hast du schon mal die diskussionen nachverfolgt wenn du nach "CreateDIBSection OpenGL" googelst?

Jo gerade noch ;)
Überall wird das HBitmap mit CreateDIBSection erstellt.. alternativ von einem Image geladen.
Nur das habe ich nicht. ;)
Es ging hier aber auch um etwas anderes nicht darum um CreateDIBSection zu ersetzen.

Irgendwie scheint es da nicht das richtige zu geben.
Sonst hätte ich es schon vor Jahren gelößt.

Was ich quasi benötige ist ein ersatz für den VisBuf "Pointer zu den Bitmap Daten"
der über CreateDIBSection erzeugt wird.


gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 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