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

Aktuelle Zeit: Fr Jul 04, 2025 18:55

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: Mo Nov 12, 2012 17:38 
Offline
DGL Member

Registriert: Do Okt 02, 2008 23:20
Beiträge: 7
Hallo,

ich benötige einen 2D-Vektor-Canvas und frage mich, ob das mit OpenGL realisierbar wäre. Für mich sieht es so aus, als könnte man OpenGL nur Programmweit benutzen, so dass man dann alle GUI-Elemente auch über OpenGL zeichnen muss. Das wäre für mich nicht sinnvoll, weil ich ein "normales" Delphiprogramm habe, das nur zum Zeichnen eines Diagramms, eine 2D-Vektor-Ausgabe benötigt. Ich brauche also eine Komponente mit einem Vektor-Canvas zur Anzeige von Vektorgrafiken. Kann man das prinzipiell mit OpenGL realisieren? Falls nicht, wäre es wenigstens möglich in einer MDI-Anwendung OpenGL auf ein Dokumentenfenster zu beschränken?

LG
Bernd


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Nov 12, 2012 17:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ja, du kannst OpenGL auch in einem separaten Kontext verwenden. Ein Delphi-Panel z.B. reicht dafür aus. Dafür musst du die Referenzen auf Handle und DC in den entsprechenden Routinen einfach durch Handle / DC des Panels ersetzen.

Du solltest dann aber nicht so oft wie möglihc zeichnen sondern nur im OnPaint des Panels.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Nov 12, 2012 23:24 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Ich will Dich nicht von OpenGL wegbringen, aber.. für so kleine Sachen im 2D kannst Du Dir auch sowas mal angucken:
http://www.graphics32.org/wiki/
http://angusj.com/delphi/gr32_lines.php
(Die beiden Sachen gehören zusammen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Nov 13, 2012 00:35 
Offline
DGL Member

Registriert: Do Okt 02, 2008 23:20
Beiträge: 7
Vielen Dank für eure Antworten!

Jens01 hat geschrieben:
Ich will Dich nicht von OpenGL wegbringen, aber.. für so kleine Sachen im 2D kannst Du Dir auch sowas mal angucken:
http://www.graphics32.org/wiki/
http://angusj.com/delphi/gr32_lines.php
(Die beiden Sachen gehören zusammen)
Gr32 setze ich bereits seit Jahren in meinen Projekten ein. Auch Gr32_Lines.pas habe ich bereits vor längerer Zeit eingesetzt. Die Entwickler sind gerade dabei das Vektorgrafik-Interface neu zu implementieren, bzw. aufzubohren. Was schon mal dazu führt, dass Funktionen in meinen Programm gebrochen werden. In großen und ganzen bin ich mit GR32 zufrieden. ABER: Es ist halt nur eine proprietäre Schnittstelle und GR32 profitiert nicht von den Rechenpower moderner Grafikkarten. Die Einarbeitungszeit, die ich noch benötige würde, möchte ich gerne in einen offenen Standard stecken. Langfristig scheint mir das lohnender.
Aber vielleicht muss ich bald reumütig zu GR32 zurückkehren , weil mich OpenGL überfordert...

Lord Horazont hat geschrieben:
Ja, du kannst OpenGL auch in einem separaten Kontext verwenden. Ein Delphi-Panel z.B. reicht dafür aus. Dafür musst du die Referenzen auf Handle und DC in den entsprechenden Routinen einfach durch Handle / DC des Panels ersetzen.
Das hatte ich gehofft. Gibt es hier Beispiele für eine OpenGL-Delphi Komponente? Ich sehe nur Ganzfenster-Anwendungsbeispiele. Ich werde mich mal durchwühlen...

Nochmals vielen Dank!
Bernd


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Nov 13, 2012 11:25 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Okay.. sollte nur ein Tipp sein. Obwohl ich selbst sehr intensiv OpenGL einsetze, habe ich mein 2D-Diagramm aber damit (GR32) gemacht. Lines ist übrigens auch noch mal vor kurzem upgedatet worden, so dass es auf das neue GR32 angepasst ist.
Hier ist ein Beispiel für ein Panel:
http://www.delphigl.com/forum/viewtopic.php?f=13&t=3828


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 14, 2012 11:07 
Offline
DGL Member

Registriert: Do Okt 02, 2008 23:20
Beiträge: 7
Nachdem das Einrichten des DC/RC erstaunlich einfach war, stellt sich mir weiterhin die Frage, wie ich das Canvas für 2D benutzen kann:
1) Ich möchte alles über ein ViewPort und ein ViewRect beschreiben.
ViewPort: Ist der rechteckige Ausschnitt auf dem Canvas. Alles außerhalb des Rechteckes soll geklippt werden.
ViewRect ist der rechteckige Ausschnitt aus der realen Welt, der in ViewRect dargestellt werden soll.
Ich denke, das mit
Code:
  1. glMatrixMode(GL_PROJECTION);
  2. glLoadIdentity();
  3. with ViewRect do
  4.    glOrtho(left, right, bottom, top, 0, 1);

das ViewRect eingerichtet ist. Aber wie kann ich das ViewPort einrichten?

2) Ganz im Dunklen tappe ich noch was das Zeichnen von Polylines angeht. Ich möchte die Koordinaten der Lienenzüge gerne an die Grafikkarte senden (soweit deren Speicher reicht) und dann nur durch das Setzen des ViewRect darin Scrollen und Zoomen können.

3) Ebenen-Verwaltung: Wie bekomme ich es hin, dass ich die Z-Koordinate eines Linienzuges verändere, ohne die unveränderten X, Y-Koordinaten neu übertragen zu müssen?

4) Analog zu 3) wäre es schön, wenn ich Attribute der Linienzüge, wie die Farbe und die Lienenbreite, setzen könnte.

Bin dankbar für jeden Hinweis der mich auf die richtige Spur bringt!

@ Jens: Dein GR32 Tipp ist durchaus angebracht und das Lines wieder synchron zur neusten Gr32 Version ist, wusste ich nicht. Ich hatte mehr den Eindruck, dass die Entwickler von GR32 eine parallele Entwicklung begonnen hatten, die Lines einmal ersetzen wird.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 14, 2012 11:33 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Dein Stand in OpenGL kenne ich nicht. Du solltest Dir hier Schritt für Schritt die Tutorials reinziehen. Sonst wirst Du immer anecken. In OpenGl benötigst Du eine andere Denke/Herangehensweise als z.B. in GR32.

Zu GR32: Ich habe den Eindruck, als sollten die VPR-Komponente, GR32 und Lines verschmolzen werden.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 14, 2012 13:18 
Offline
DGL Member

Registriert: Do Okt 02, 2008 23:20
Beiträge: 7
Meine OpenGL Kenntnisse sind ziemlich bei Null. Darum habe ich die "Einsteiger-Fragen" Sektion des Forums gewählt. Aber CG ist CG, nur die Art der Hardwarebeschleunigung ist wirklich neu für mich.

Wieso anecken? Das Forum ist so wenig frequentierte, dass ein Anecken kaum möglich ist. Wahrscheinlicher sind "Selbstgespräche". Ich jammere nicht herum, wenn keiner mir schreibt. Wenn ich - wie erhofft - gut mit 2D vorankomme, dann wird es schon interessant für andere Foren-Teilnehmer bzw. neu Hinzukommende werden…

Das Problem mit OpenGL ist doch die Gleichsetzung OpenGL=3D. Dein Standard-Vorschlag, die Tutorials durchzuarbeiten ist deshalb nicht sehr attraktiv, weil gefühlte 99% der dortigen Informationen für mein Problem (noch) nicht relevant sind. Da hoffe ich lieber, dass jemand mir ein Link zum richtigen Tutorial gibt. Wie du es ja auch tust.

Wir alle kenn das: Das Ausformulieren eines Problems hilft bereits bei der Lösungsfindung. Ich bin dadurch auf die Idee gekommen nach "OpenGL Polyline" zu googeln und siehe da:

http://www.codeproject.com/Articles/226 ... ssellation
http://artgrammer.blogspot.de/2011/05/d ... ments.html

Wieder ein kleines Puzzelteil gefunden (*mich freu*).


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 14, 2012 13:38 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Zitat:
Wieso anecken? Das Forum ist so wenig frequentierte, dass ein Anecken kaum möglich ist.
Mit "Anecken" meinte ich, dass Du immer wieder an Dinge in OpenGl stößt, die Dir Probleme bereiten. Ich meinte nicht das persönliche "Anecken".


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 14, 2012 16:09 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
Nur so am Rande

"with" würd ich auch in Delphi vermeiden, wenn möglich.

Das kann in manchen Konstruktionen zur Verwirrung führen.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 14, 2012 17:05 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
BerndD hat geschrieben:
Das Problem mit OpenGL ist doch die Gleichsetzung OpenGL=3D. Dein Standard-Vorschlag, die Tutorials durchzuarbeiten ist deshalb nicht sehr attraktiv, weil gefühlte 99% der dortigen Informationen für mein Problem (noch) nicht relevant sind. Da hoffe ich lieber, dass jemand mir ein Link zum richtigen Tutorial gibt. Wie du es ja auch tust.

http://wiki.delphigl.com/index.php/Tutorial_2D

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Nov 14, 2012 19:44 
Offline
DGL Member

Registriert: Do Okt 02, 2008 23:20
Beiträge: 7
i0n0s hat geschrieben:
http://wiki.delphigl.com/index.php/Tutorial_2D
Danke i0n0s, dass ist genau das was ich noch gebraucht habe. Nun kann ich schon mal ein Grundgerüst für eine Komponente erstellen.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 15, 2012 13:15 
Offline
DGL Member

Registriert: Do Nov 15, 2012 10:50
Beiträge: 3
Programmiersprache: Delphi
Es existiert ein Delphi-OpenGL Projekt direkt für 2D Sache: Andorra 2D
http://andorra.sourceforge.net
Leider scheint dieses nicht weiterentwickelt zu werden - letzte Änderung 2009.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Nov 16, 2012 17:44 
Offline
DGL Member

Registriert: Do Okt 02, 2008 23:20
Beiträge: 7
Hallo bit,

Andorra 2D kenne ich. Für OpenGL wird dlgOpenGL.pas eingebunden. Ansonsten wird viel DirectX (oder wie immer das gerade bei MS heißt) verwendet. Wie es aussieht geht ohne DirectX nichts. Deshalb für mich uninteressant. Wenn ich eine proprietäre Schnittstelle in kauf nehmen muss, dann doch lieber GR32. Da hängt wenigstens nicht das halbe Betriebssystem dran :x.

Trotzdem Danke - vielleicht nützt es jemand anderem...

Interessanter finde ich OpenCL, z.B. hier: http://www.heatlab.cz/OpenCLforDelphi.html. Da wird auch dlgOpenGL.pas benutzt.

Hat hier jemand Erfahrung damit? Ist das brauchbar für Grafikbeschleunigung? Wie funktioniert das Zusammenspiel mit OpenGL? Nur nebenher, miteinander oder ersetzt OpenCL OpenGL (irgendwann) ganz?

Wenn ich so viel Zeit wie Fragen hätte, wäre ich ein sehr glücklicher Mensch – oder den Wahnsinn ein Stückchen näher :mrgreen: .


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Nov 16, 2012 23:20 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
OpenCL ist eine Sprache zur Ausführung von Berechnungen auf der GPU.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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.009s | 15 Queries | GZIP : On ]