Komplexe und aufwendige Algorithmen wie 'FloodFill' mit OpenGL



  • Hi Leute,

    kennt jemand von euch fertigen Code, oder Tutorials um mit OpenGL 2 Dimensionale FloodFill-Algorithmen zu zeichnen? Ich habe schon mehrfach versucht die Win32API zu nutzen aber in einem Grafikprogramm ist nun mal nicht genug Platz für zwei GDIs.

    Das Problem besteht vorallem darin dass solche Algorithmen viel Zeit in Anspruch nehmen und ich weiß nicht wie ich Funktionen wie aus der WinAPI (FloodFill, Pie, Chord, Arc usw.) selber am besten hin bekomme?!


  • Mod

    Floodfill braucht man nicht, versuch das anders zu loesen 😉



  • rapso schrieb:

    Floodfill braucht man nicht, versuch das anders zu loesen 😉

    Sollte auf jeden Fall in Verbindung mit OpenGL vollkommen fehl am Platz sein. Falls du es dennoch zur Pixelmanipulation brauchst, schau mal hier: http://de.wikipedia.org/wiki/Floodfill



  • rapso schrieb:

    Floodfill braucht man nicht, versuch das anders zu loesen 😉

    Was meinst du mit, 'das braucht man nicht?'
    Wenn ich vorhabe soetwas zu machen brauche ich sowas.



  • Entweder du machst deine eigene Implementierung (und zeichnest z. B. in Array, aus dem du später eine Textur machst) oder du löst das Problem ganz anders (z. B. durch Tesselierung).

    OpenGL und Floodfill passen auf jeden Fall nicht so gut zusammen.



  • Nagut, aber was bedeutet 'Tesselierung'?




  • Mod

    LukasBanana schrieb:

    rapso schrieb:

    Floodfill braucht man nicht, versuch das anders zu loesen 😉

    Was meinst du mit, 'das braucht man nicht?'

    dass du es nicht brauchst. es ist nur ein mittel um dein ziel zu erreichen und das ziel ist viel besser mit anderen mitteln zu erreichen, deswegen gibt es bei 3d APIs kein floodfill.

    Wenn ich vorhabe soetwas zu machen brauche ich sowas.

    du machst floodfill des floodfill wegens? 😕



  • Ihr meint also man sollte einfach mit ganz vielen Dreiecken eine gefüllte Fläche zeichnen?


  • Mod

    LukasBanana schrieb:

    Ihr meint also man sollte einfach mit ganz vielen Dreiecken eine gefüllte Fläche zeichnen?

    es gibt viele wege zum ziel, darum dreht sich programmieren schliesslich 😉



  • Das hängt ganz davon ab, was deine Aufgabenstellung ist.

    Floodfill wird vor allem für Bildverarbeitung eingesetzt (OK, nicht 100% präzise, aber ich hoffe präzise genug für den Moment), während 3D-Apis wie OGL trianglebasiert arbeiten (OK, auch das ist unsauber).

    Ergo: je nachdem, aus welchem Bereich meine Aufgabe ist, würde ich wahlweise mit Tesselierung (Eckpunkte des zu füllenden Polygons sind gegeben) oder mit einer Implementierung von Floodfill innerhalb meines Pixelarrays (aus dem ich dannach eine Textur baue) arbeiten.

    Ich gehe mal davon aus, andere Leute hier im Forum hätten viel genialere Ideen, aber diese werden sie wohl erst erzählen können, wenn du sagst, was du überhaupt machen willst.


  • Mod

    wolfgke schrieb:

    Das hängt ganz davon ab, was deine Aufgabenstellung ist.
    aber diese werden sie wohl erst erzählen können, wenn du sagst, was du überhaupt machen willst.

    so sehe ich das auch 🙂

    Ergo: je nachdem, aus welchem Bereich meine Aufgabe ist, würde ich wahlweise mit Tesselierung (Eckpunkte des zu füllenden Polygons sind gegeben) oder mit einer Implementierung von Floodfill innerhalb meines Pixelarrays (aus dem ich dannach eine Textur baue) arbeiten.

    naja, vielleicht will er auch nur den hintergrund in einer speziellen farbe haben wo nichts hingezeichnet wurde, dann wuerde ne andere clearfarbe reichen
    who knows? 😉 er sagt ja nicht was das problem ist, er fragt nur ob ogl floodfill hat.



  • Es gibt so viele Grafikbibliotheken, kostenlose gibt es auch jede Menge. Aber bei den meisten vermisse ich einige 2D Grafik Funktionen, um z.B. eine mit der man eine bestimmte Fläche farbig ausmalen kann. Und weil es sowas nun mal nicht in jeder Grafikbibliothek gibt wollte ich so ne Funktion selber schreiben bzw. vonder WinAPI nutzen weil die sowas eben schon fertig anbietet, nämlich FloodFill. Warum OpenGL? Weil einige Grafikbibliotheken eben auf OpenGL zugreifen. Deshalb wollte ich wissen ob man unter OpenGL die WinAPI nutzen kann


  • Mod

    LukasBanana schrieb:

    Es gibt so viele Grafikbibliotheken, kostenlose gibt es auch jede Menge. Aber bei den meisten vermisse ich einige 2D Grafik Funktionen, um z.B. eine mit der man eine bestimmte Fläche farbig ausmalen kann. Und weil es sowas nun mal nicht in jeder Grafikbibliothek gibt wollte ich so ne Funktion selber schreiben bzw. vonder WinAPI nutzen weil die sowas eben schon fertig anbietet, nämlich FloodFill. Warum OpenGL? Weil einige Grafikbibliotheken eben auf OpenGL zugreifen. Deshalb wollte ich wissen ob man unter OpenGL die WinAPI nutzen kann

    Die funktion gibt es nicht, weil der algorithmus sehr sequenziel und deswegen schlecht fuer die graphikhardware ist, es gibt viele andere wege sowas zu erreichen, mit polygonen, die die flaeche ausfuellen, mit dem painter algorithmus, mit dilation shadern, mit stencil tricks usw.
    und je nachdem was man erreichen will gibt es noch viele andere wege.



  • In OpenGL kannst du auch mit Einheitsmodelview und Einheitsprojektionsmatrix mit den Befehlen glVertex2f und Umrechnung von Bildschrimkoordinaten in "Weltkoordinaten" leicht gefüllte Polygone zeichnen. Bei Gelegenheit kram ich auch ein bisschen Code raus ...



  • LukasBanana schrieb:

    Es gibt so viele Grafikbibliotheken, kostenlose gibt es auch jede Menge. Aber bei den meisten vermisse ich einige 2D Grafik Funktionen, um z.B. eine mit der man eine bestimmte Fläche farbig ausmalen kann. Und weil es sowas nun mal nicht in jeder Grafikbibliothek gibt wollte ich so ne Funktion selber schreiben bzw. vonder WinAPI nutzen weil die sowas eben schon fertig anbietet, nämlich FloodFill.

    Es ist immernoch nicht klar, was du vor hast. Schreibst du ein Grafikprogramm, dass eine "Füllen"-Funktion anbietet, nimm Flood-Fill und kein OpenGL. Schreibst du ein Spiel oder Ähnliches, wobei du schnell ausgefüllte Flächen zeichnen willst, dann nimm OpenGL und unterteile deine Flächen in Dreiecke.

    LukasBanana schrieb:

    Warum OpenGL? Weil einige Grafikbibliotheken eben auf OpenGL zugreifen. Deshalb wollte ich wissen ob man unter OpenGL die WinAPI nutzen kann

    OpenGL ist eine Bibliothek genauso, wie WinAPI. Die Frage macht also so keinen Sinn. Du kannst bestimmt ein Bild mit OpenGL rendern, es wieder in den Arbeitsspeicher reinlesen und dann mit der WinAPI bearbeiten, aber das wäre das schlimmste, was du anstellen kannst. Außerdem darf der Sinn bezweifelt werden.



  • Deshalb wollte ich wissen ob man unter OpenGL die WinAPI nutzen kann

    Ja, kann man. Ist deine Frage jetzt beantwortet? 🤡 SCNR

    P. S.: Ich behaupte nicht, dass die Kombination in jedem Fall sinnvoll ist.



  • megaweber schrieb:

    In OpenGL kannst du auch mit Einheitsmodelview und Einheitsprojektionsmatrix mit den Befehlen glVertex2f und Umrechnung von Bildschrimkoordinaten in "Weltkoordinaten" leicht gefüllte Polygone zeichnen. Bei Gelegenheit kram ich auch ein bisschen Code raus ...

    Nur aus Interesse: Was sind "Einheitsmodelview" und "Einheitsprojektionsmatrix"?


  • Mod

    this->that schrieb:

    megaweber schrieb:

    In OpenGL kannst du auch mit Einheitsmodelview und Einheitsprojektionsmatrix mit den Befehlen glVertex2f und Umrechnung von Bildschrimkoordinaten in "Weltkoordinaten" leicht gefüllte Polygone zeichnen. Bei Gelegenheit kram ich auch ein bisschen Code raus ...

    Nur aus Interesse: Was sind "Einheitsmodelview" und "Einheitsprojektionsmatrix"?

    Einheitsmatrix, Modelview und Projektions Matrix
    Man fuege ein wenig grips hinzu und warte auf erleuchtung 🤡 😉



  • rapso schrieb:

    this->that schrieb:

    megaweber schrieb:

    In OpenGL kannst du auch mit Einheitsmodelview und Einheitsprojektionsmatrix mit den Befehlen glVertex2f und Umrechnung von Bildschrimkoordinaten in "Weltkoordinaten" leicht gefüllte Polygone zeichnen. Bei Gelegenheit kram ich auch ein bisschen Code raus ...

    Nur aus Interesse: Was sind "Einheitsmodelview" und "Einheitsprojektionsmatrix"?

    Einheitsmatrix, Modelview und Projektions Matrix
    Man fuege ein wenig grips hinzu und warte auf erleuchtung 🤡 😉

    Soll er doch gleich sagen, Koordinaten im Clip Space;)


Anmelden zum Antworten