Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 19:33

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL auf TImage
BeitragVerfasst: Mi Dez 01, 2004 19:24 
Offline
DGL Member

Registriert: Mi Dez 01, 2004 19:11
Beiträge: 2
Hallo Leute !
Ich kenne mich nicht so gut aus mit Handles und Device Context und dergleichen.
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. Das Problem ist, dass dieses Grafikinterface aber auf jeden Fall ein TImage bekommen muss. 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 !!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 01, 2004 20:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also um dich mal richtig in eine Zwickmühle zu bringen. OpenGL zeichnet automatisch auf ein Fenster. Mit einem TImage wirst du da nicht viel anfangen können, da du zum Erstellen von OpenGL normalerweise ein Handle auf eine DeviceContext benötigst. Nicht verwechseln mit dem Handle einer Canvas. Ist zwar auch ein HDC. Die sind aber leider nicht kompatibel. Und normal benötigst du dafür ein richtiges Fensterhandle.

Es gibt eine Möglichkeit die mir so spontan noch einfällt. Verdammt dreckig aber könnte klappen. Beim Initialisieren deiner Klasse übergibst du ein TImage und dann erstellst du ein Panel welches das TImage komplet überdeckt. Und schon kannst du mit dem Panel OpenGL benutzen.

Allerdings als professioneller Entwickler lege ich dir sehr ans Herz, dass du deine Schnittstelle änderst. Da OpenGL auch vom Zeichnen her nicht so ganz (eigentlich so überhaupt nicht) mit GDI kompatibel ist. Besonders dann, wenn du in OpenGL 3D machen willst wärend du in GDI 2D benutzen möchtest. Dann steckt man normal in einer konzeptionellen Zwickmühle.

Zum Thema ersatz kannst du ein TPanel oder ein TWinControl benutzen. Auf beiden kannst du mittels Canvas (muss noch als Property nur noch sichtbar gemacht werden) zeichnen.
Strukturel sollte es eigentlich genügen wenn du eine Abstracte Basisklasse definierst und 2 Ableitungen dieser Klasse erstellst. Eine für GDI und eine für OpenGL. Dann brauch dich nämlich nur noch beim erstellen der Klasse (üblicherweise nur 1 Mal) zu interessieren was es bekommt. Aber ich zeichne generell immer auf ein Panel. Vor allem bei GDI.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 01, 2004 20:45 
Offline
DGL Member

Registriert: Mi Dez 01, 2004 19:11
Beiträge: 2
Hi !
Die Sache mit dem Panel raufpacken ist eine sehr gute Idee, werd ich gleich ausprobieren.
Dreckig ist das wirklich, da schließe ich mich dir an, aber daran ist die Gesamtkonzeption schuld und die kann ich halt nicht mehr ändern.
Die Inkompatibilität zwischen OpenGL und GDI ist mir auch klar. Genau aus dem Grund habe ich ja die Grafikklasse überhaupt programmiert. Sie soll Standardprozeduren liefern zum zeichnen, die je nach Wunsch in OpenGL, in normale Canvas-Zeichenfunktionen oder auch DirectX übersetzt werden sollen.
Normaler Weise zeichne ich ja auch auf ein Panel, beim nächsten mal mach ichs besser !

Danke für den Tip !!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 03, 2004 12:07 
Offline
DGL Member

Registriert: Fr Dez 03, 2004 12:03
Beiträge: 3
Hi,

möchte mich an dieser Stelle auch mal bedanken, weil du mit dieser Antwort auch gleich mein Problem gelöst hast :P. Ich bin gerade am Anfang der 3D-Entwicklung, und war noch unschlüssig, ob ich DirectX oder OpenGL verwenden soll. Da ich aber auf diversen DirectX-Foren seit Tagen keine!!! Antwort bekommen habe, und hier ohne Frage schon die Lösung finde, ist das für mich nun (zur Freude meiner Bekannten) erledigt.

Einen Fan mehr hat OpenGL jetzt :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]