Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ein TImage für OpenGL benutzen ? (https://www.delphipraxis.net/35038-ein-timage-fuer-opengl-benutzen.html)

sezer.yilmaz 1. Dez 2004 18:36


Ein TImage für OpenGL benutzen ?
 
Hallo !

Vorweg sei gesagt, dass mein Problem mit OpenGL zu tun hat.
Ich habe einen Funktionsplotter geschrieben, der als Grafikausgabe das Canvas eines TImage benutzt.
Der Grafikteil wurde in eine Klasse ausgelagert, die mir elementare Grafikfunktionen liefert und im Grunde genommen ausgewechselt werden kann mit einer OpenGL-Variante. Wäre da nicht das Problem, dass dieses Grafikinterface aber auf jeden Fall ein TImage bekommen muss, worauf es dann arbeitet. Das ist kein Problem dachte ich, da ich mir nicht im klaren war, dass OpenGL mit dem Handle von TImage nichts anfangen kann. Es muss doch irgendeinen Trick geben, dass ich doch noch irgendwie OpenGL mit einem TImage benutzen kann ? Hat da jemand eine Ahnung ? Vielleicht gibt es einen Ersatz für TImage, welcher auch für OpenGL geeignet ist ?

Vielen Dank schonmal im Voraus ! Ich bin für alle Vorschläge dankbar !!!

supermuckl 1. Dez 2004 18:47

Re: Ein TImage für OpenGL benutzen ?
 
ich würde das umbauen das es nur für Canvas'e funktioniert.

das heist, du nimmst dann image1.picture.bitmap.canvas

oder opengl mäßig ein temporäres Tbitmap.canvas und zeichnest dadrauf und dann nach opengl "kopieren" irgendwie..
die elegantere lösung wäre, wenn du direkt in openGL zeichnen würdest, für den GL teil.

bitmaps in GL anzeigen ist kein problem.. aber ob man da auch on the fly auf ein opengl canvas zeichnen kann weis ich nicht.

sezer.yilmaz 1. Dez 2004 19:00

Re: Ein TImage für OpenGL benutzen ?
 
Sobald das Grafikinterface mit der OpenGL-Variante ausgetauscht ist, zeiche ich ja sowieso direkt in OpenGL. Beim Createn des Interfaces wird aber trotzdem das TImage als Parameter mit übergeben. Bei der normalen Grafikausgabe ist das nötig, weil das Interface ja wissen muss mit welchem TImage.Canvas es arbeiten soll. In der OpenGl variante ist diese Parameterübergabe nur noch nötig, weil das TImage als "Leinwand" benutzt werden soll für OpenGL.
Der Tip mit dem Umbauen auf Canvas ist ja garnicht schlecht, aber ich habe auch versucht einfach mit dem Handle des Canvas zu arbeiten (MeinImage.Canvas.Handle) aber dieses Handle mag OpenGL auch nicht. Warum auch immer ?

sezer.yilmaz 2. Dez 2004 15:41

Re: Ein TImage für OpenGL benutzen ?
 
Hab das Problem gelöst !
Für alle die es wissen wollen:
Einfach trotzdem das TImage als Parameter übergeben, aus der Klasse heraus ein TPanel auf dem Form erzeugen und einfach darauf zeichnen. Das Panel muss dann halt das Image bedecken. Ist zwar dreckig aber funktioniert ;)


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