Registriert: So Dez 29, 2002 10:37 Beiträge: 251 Wohnort: Ulm
nabend,
ich versuch gerade, zwei unterschiedliche Rendering Contexte zu erstellen, nur klappt das zeichnen nicht so ganz ich krieg die fehlermeldung "Incoherent DC/RC pair" wenn ich activaterenderingcontext(PDC,PRC); (für den zweiten RC) aufrufe. der 2. soll in einem panel laufen (was er alleine auch tut..) und der erste ist das hauptfenster. die initialisierungen beider RCs sind identisch, nur dsas bei dem ersten die variablen FDC/FRC und beim zweiten PDC/PRC heißen.. hier mal der komplette aufruf des zweiten (ist in einer neuen form..):
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Nein, das was du oben versuchst geht nicht.Deshalb auch die Meldung mit den inkoherenten DC/RC-Paar.Für jeden RC brauchst du auch nen eigenenen DC, sonst funzt das nicht.
Zitat:
wie erstelle ich zwei rendering contexte, mit denen ich arbeiten kann?
Genauso, wie wenn du einen erstellen willst.Anhand der Tatsache das du ActivateRenderingContext benutzt, geh ich mal davon aus, das du Mike Lischkes OpenGl12.pas benutzt, weshalb ich mich dann auch darauf beziehe : <!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>DC1 := GetHandle(Form.Handle); DC2 := GetHandle(Panel.Handle); RC1 := CreateRenderingContext(DC1, ...); RC2 := CreateRenderingContext(DC2, ...);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3--> Beim Zeichnen musst du dann natürlich zwischen den zwei Kontexten hin- und herschalten : <!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>ActivateRenderingContext(DC1, RC1); // Zeichne ... DeActivateRenderingContext; ActivateRenderingContext(DC2, RC2); // Zeichne ... DeActivateRenderingContext;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3--> Allerdings ist der Kontextwechsel in jedem Frame eine recht kostspielige Angelegenheit.Wenn du also eine Szene nicht in jedem Frame aktualisieren musst (z.B. ein Objektvorschaufenster), dann solltest du dies über einen Timer zeichnen.Das zerrt dann nicht so an deiner Renderleistung.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich verwende bei mir Thread zum rendern. Das hat hauptsächlich auch andere Gründe. Damit konnte ich auf meiner TNT 2 ohne Probleme auf 4 Panels gleichzeitig rendern. Und die ganze Verwirrung mit aktivem Renderkontext kann man sich dabei auch sparen. Der aktive Renderkontext ist Threadbezogen. Soll bedeuten bei einem eigenen Renderthread brauch man nur zu Begin einmal den Kontext aktivieren und er ist bis zum Ende der Anwendung gültig. Ist nur die Frage, welche der beiden Methoden schneller ist? Der kleine Overhed mit den Threads oder das ständige wechseln den Kontextes? Aber wenn Thread gut gemacht sind, dürfte der Overghead nur sehr gering ausfallen.
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
:huh: uuuhhhhhhhhhh..... (*erinnerung.auf.kommt*). Schreib mir mal jemand ne Mail mit ner Erinnerung, habe hier irgendwo ein fast fertiges Template für dieses Problem gemacht und bisher vergessen hochzuladen .... <_< typisch...
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.