Registriert: Sa Jan 03, 2015 23:22 Beiträge: 5
Programmiersprache: Delphi
Wie zeichnet Ihr dicke Linien mit abgerundeten Enden? Die Qualität des Ergebnisses muss hoch sein. Die Linien müssen außen herum komplett Antialiasing haben. Also entlang der Linie und an den Abrundungen.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich nehme dafür Cairo (und kein OpenGL). Die Anforderung klingt nach Benutzeroberflächen.
grüße, Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
Registriert: Sa Jan 03, 2015 23:22 Beiträge: 5
Programmiersprache: Delphi
Ich habe mit cairo experimentiert und festgestellt, dass es schön aber leider nicht hardwarebeschleunigt ist. Ebenfalls habe ich mit Andorra2D experimentiert, aber es kann nur ganzzahlige Koordinaten verarbeiten und macht kein Antialising bei Polygonen.
Ich habe keine GUI-Probleme, sondern ich muss sehr schnell sehr viele ansehnliche Linienzüge und Polygone mit Transparenz in einem Canvas anzeigen.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Wie viel sind denn „viele“ und wie schnell ist „schnell“? Wenn „schnell“ schnell genug ist, sieht man das Antialiasing sowieso nicht. Wenn „viele“ nicht so viele ist oder „schnell“ nicht so schnell, kann man trotzdem Cairo verwenden.
Ansonsten wirst du nicht um eine eigene Lösung herumkommen. Es gab hier im Forum schon ein paar mal Hinweise auf Shader, mit denen man Beziérs und andere Kurven rendern konnte, aber ich weiß gerade nicht wo. Die Suchfunktion könnte da weiter helfen.
viele Grüße, Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
Registriert: Sa Jan 03, 2015 23:22 Beiträge: 5
Programmiersprache: Delphi
Hi Horazont,
danke für die Mühe, die Du Dir machst! Einige Zehntausend Linien und Dreiecke und ja, es muss trotzdem gut aussehen, weil der User das Bild ja stehen lassen kann zum genauen Betrachten (kein Game etc.). Aber Zoomen, Pannen und Änderungen aller Art müssen blitzschnell gehen.
Ich habe das hier bereits im wilden Internet gefunden:
Registriert: Sa Jan 03, 2015 23:22 Beiträge: 5
Programmiersprache: Delphi
Ich habe hier nach Shader und Kurve oder Bezier gesucht, aber nix recht gefunden.
Du hattest ja bereits erahnt, dass es im Endeffekt 2D sein soll. Aber OpenGL ist im Endeffekt das einzige, das Cross-Platform hardwarebeschleunigt arbeitet.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Ein einfacher Trick: Zeiche dir einen weißen Kreis in eine Textur, und dann zeichnest die deine Linie aus 3 Quads. So wie das in einem deiner Links schon beschrieben wurde
Das ist meiner Meinung nach die schnellste und einfachste Lösung, und das Ergebnis sollte genau das sein was du willst, oder?
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo,
eine weitere Möglichkeit wäre das Zeichnen von GL_POINTS an den Linienenden in Kombination mit glPointSize und glHint(GL_POINT_SMOOTH_HINT, GL_NICEST).
Viele Grüße dj3hut1
_________________ Wenn Gauß heute lebte, wäre er ein Hacker. Peter Sarnak, Professor an der Princeton University
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Notiz: Zumindest als ich das letzte mal Points verwendet habe, wurden die quadratisch. Man braucht also wieder eine Textur.
viele Grüße, Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
Points sind nur rund, wenn diese Funktion mit "GL_POINT_SMOOTH" angeschaltet ist. Zu beachten ist, dass diese Funktionalität, soweit ich weiß, veraltet ist und im OpenGL Core nicht mehr zur Verfügung steht.
Ich würde die Funktionalität im Fragment Shader implementieren. Im Geometry Shader kann man sogar die Linie automatisch zu Quads extrudieren.
Zuletzt geändert von OpenglerF am Mi Jan 14, 2015 15:36, insgesamt 1-mal geändert.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Jepp, runde Punkte macht man seit OpenGL 3 mit Shadern. Hier ist ein Beispiel.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Sa Jan 03, 2015 23:22 Beiträge: 5
Programmiersprache: Delphi
Hallo Leute,
die Idee mit den Shadern gefällt mir am besten. Hat jemand von Euch einfache Beispiele für die Verwendung von Shadern in Delphi? Wenn man nach "Shader" sucht, sieht man vor lauter Bäumen den Wald nicht.
Hallo glAwesome,
Die gezeigten runden Punkte sind leider ohne Anti-Aliasing?!?
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.