Registriert: Di Jun 10, 2014 06:59 Beiträge: 17
Programmiersprache: Delphi XE6
Hallo zusammen,
ich habe eine Programm, mit dem ich via OpenGL Vektormodelle anzeige. Die Modelle sind 3-Dimensional. Nun möchte ich noch ein paar zusätzliche Infos am Bildschirm ausgeben, welche nicht direkt aus der OpenGL-Welt kommen. Ich möchte ein Logo in der Bildschirmecke ausgeben, das derzeit nur in Form eines Bitmaps vorliegt (TBitmap). Weiterhin möchte ich eine Skala ausgeben, welche bisher mit TCanvas erstellt wurde. Bisher erzeuge ich die OpenGL-Grafik in den Framebuffer und hole diese dann mit "SwapBuffers" auf den Bildschirm. Danach kopiere ich das Logo mit "Canvas.Draw" auf den Bildschirm und zeichne dann mit den üblichen TCanvas-Befehlen die Skala. Das Flackern stört mich dabei eigentlich nicht.
Nun das Problem: Bei moderneren Grafikkarten wird das in OpenGL erzeugt Bild verzögert ausgegeben. Ich erstelle zwar meine zusätzlichen Elemente, diese werden dann allerdings wieder durch die Ausgabe von OpenGL überschrieben. Ich habe schon versucht mit "glFinish" zu synchronisieren bzw. auf das Beenden der Ausgabe von OpenGL zu warten. Leider kehrt "glFinish" zurück, obwohl OpenGL noch zeichnet.
Eine Lösung wäre, den Inhalt des Bitmaps bzw. Das von mir auf einen Canvas gezeichnete in den Framebuffer zu schreiben. Hier habe ich allerdings keine Idee wie... Wie kann ich ein TBitmap bzw. den Inhalt von TCanvas an einer festen Stelle im Framebuffer ausgeben?
Mitglieder in diesem Forum: 0 Mitglieder und 14 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.