Thema: Delphi Reihenfolge OpenGl

Einzelnen Beitrag anzeigen

Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#4

Re: Reihenfolge OpenGl

  Alt 9. Jun 2008, 16:48
Ich habe aber gerade mal geschaut. Du kannst den RC innerhalb eines Threads erstellen und in der VCL benutzen. Damit handelt es sich um 2 unterschiedliche Threads was ja der Thematik entspricht. Also folgendes. Nach dem Erstellen, wird der RC ja normal aktiviert. Damit wäre er an diesen Thread "geknebelt". Diesen RC kannst du dann in keinen anderen Thread aktivieren und somit steht in den Threads kein OpenGL zur Verfügung. Aber nur solange er noch aktiv ist.

Du müstest dann den RC entweder in dem Thread entbinden wglMakeCurrent(DC, 0); oder aber du aktivierst ihn gar nicht erst im Thread sondern nur wärend dem Rendern.

Du musst aber aufpassen, dass du die Funktionspointer lädst. Also ActivateRenderingContext mit dem dritten Paramater True. Nur nicht jedes mal wärend dem Rendern, da es sonst viel zu langsam werden würde! Da würde sich wohl eine Variablen empfehlen mit der überprüfst ob der RC bereits aktiviert ist. Wenn nicht. Aktivieren und funktionspointer laden. Anschließend die Variable setzen damit er nicht noch einmal aktiviert wird. Denn selbst das Aktivieren eines RCs dauert einiges an Zeit. Weswegen man das sehr sparsam machen sollte.

[edit] Es scheint wohl auch so zu sein, dass die Lebensdauer des RCs von der Lebendauer des Erstellerthreads abhängt. Wird der Thread zerstört ist der RC futsch. Selbst wenn er nicht in dem Thread aktiviert wurd/ist. Ich will also auch nicht ausschließen, dass es sonst keine Probleme mehr gibt.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat