Komplexe und aufwendige Algorithmen wie 'FloodFill' mit OpenGL
-
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'?
-
-
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?
-
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.
-
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
-
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?
SCNRP. 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"?
-
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;)
-
Ich will 2D UND 3D Grafiken mit OpenGL programmieren. Und ich wollte mir eben ein paar Funktionen bereit stellen, falls ich sie mal brauche. Und da dachte ich, ich könnte irgendwann auch mal für ein 2D Spiel eine Funktion gebrauchen mit der man Flächen ausmalen kann. Aber ich weiß jetzt dass ich das wenn überhaupt mit OpenGL Polygonen mache, also ausgefüllte Dreiecke.
