GUI-Thread mit OpenGL/DirectX - überhaupt möglich?
-
Scorcher24 schrieb:
dot schrieb:
Evtl. einfach mal den Background Brush auf 0 setzen? Ansonten evtl. WM_ERASEBKGND abfangen
This.
Hier noch was interessantes dazu:
http://stackoverflow.com/a/1750301/1743172Das mit CS_OWNDC ist afaik allerdings nicht korrekt. Ist aber auch schon ein ganzes Weilchen her, dass ich mich damit mal beschäftigt hab...
-
dot schrieb:
Scorcher24 schrieb:
dot schrieb:
Evtl. einfach mal den Background Brush auf 0 setzen? Ansonten evtl. WM_ERASEBKGND abfangen
This.
Hier noch was interessantes dazu:
http://stackoverflow.com/a/1750301/1743172Das mit CS_OWNDC ist afaik allerdings nicht korrekt. Ist aber auch schon ein ganzes Weilchen her, dass ich mich damit mal beschäftigt hab...
Soweit ich weiss schon und im OpenGL Wiki ist es auch noch so drin:
http://www.opengl.org/wiki/Platform_specifics:_Windows#What_should_I_do_before_the_window_is_created.3FWikis sind nicht das Ende alles Wissens, aber ich vertraue einfach mal auf dieses.
-
CS_OWNDC sollte afaik generell schon seit langem nichtmehr benutzt werden. Es tut afaik nichts anderes, als sicherzustellen, dass das System dir für ein entsprechendes Fenster immer den selben DC liefert. Die saubere Lösung wäre imo, den DC einfach nicht zu Releasen, so lange man ihn noch braucht, anstatt jedesmal einen neuen DC anzufordern und diesen Hack im Betriebssystem zu nutzen, um immer den gleichen DC zu bekommen...
-
Mit
case WM_ERASEBKGND: return TRUE; case WM_PAINT: ValidateRect(hwnd, 0); break;
sieht es schon deutlich besser aus, aber noch nicht fehlerfrei. Wenn man das Fenster verkleinert scheinen zumindest die einzelnen "Objekte" darauf immer noch zu flackern, bzw. einen Frame lang nicht gezeichnet zu werden. Ich fürchte da kann man wohl nicht mehr so viel dran ändern?
-
Was genau für "Objekte drauf"?
-
Den Kram den ich halt mit OpenGL zeichne. Texte, Sprites, ... - Der Unterschied zu vorher ist, dass die Farbe mit der in clear()e jetzt stimmt. (Vorher wurde beim verkleinern ja mit weiß gecleared, was ziemlich schlimm aussah.)