Grüner Rand bei transparenten Bildern aufgrund GL_LINEAR
-
Ja, war klar. Du kannst auch die restlichen 3 Farben auf 255 setzen, dann ist der Rand weiß. Oder du kannst den Durchschnitt aller Farben auf der Textur nehmen, oder was weis ich.
-
joomoo schrieb:
ChockoCookie schrieb:
WTF??? Was willst du eigentlich?
Ich geb's auf.Ich möchte Bitmaps in OpenGL zeichnen, wo alles was grün ist transparent ist ohne grünen rand. Außerdem möchte ich dabei nicht auf GL_LINEAR verzichten.
dann musst du das bilineare Filtering ausmachen, hab ich doch gesagt.
Bye, TGGC (Demo or Die)
-
TGGC schrieb:
joomoo schrieb:
ChockoCookie schrieb:
WTF??? Was willst du eigentlich?
Ich geb's auf.Ich möchte Bitmaps in OpenGL zeichnen, wo alles was grün ist transparent ist ohne grünen rand. Außerdem möchte ich dabei nicht auf GL_LINEAR verzichten.
dann musst du das bilineare Filtering ausmachen, hab ich doch gesagt.
Bye, TGGC (Demo or Die)
Darauf möchte ich aber auch nicht verzichten, hab ich doch gesagt.
mfg.
-
ChockoCookie schrieb:
Ja, war klar. Du kannst auch die restlichen 3 Farben auf 255 setzen, dann ist der Rand weiß. Oder du kannst den Durchschnitt aller Farben auf der Textur nehmen, oder was weis ich.
Hallo? Es war deine Idee die restlichen Farben auf 0 zu setzen.
mfg.
-
Klar war es meine Idee. Besser gesagt war es *tada* die Lösung.
-
ChockoCookie schrieb:
Klar war es meine Idee. Besser gesagt war es *tada* die Lösung.
Die Lösung? Ne, eigentlich nicht.
mfg.
-
joomoo schrieb:
TGGC schrieb:
joomoo schrieb:
ChockoCookie schrieb:
WTF??? Was willst du eigentlich?
Ich geb's auf.Ich möchte Bitmaps in OpenGL zeichnen, wo alles was grün ist transparent ist ohne grünen rand. Außerdem möchte ich dabei nicht auf GL_LINEAR verzichten.
dann musst du das bilineare Filtering ausmachen, hab ich doch gesagt.
Bye, TGGC (Demo or Die)
Darauf möchte ich aber auch nicht verzichten, hab ich doch gesagt.
mfg.
Liest du eigentlich was ich sage? Du musst natürlich nicht, kannst auch dumm sterben.
Bye, TGGC (Demo or Die)
-
TGGC schrieb:
Liest du eigentlich was ich sage? Du musst natürlich nicht, kannst auch dumm sterben.
Bye, TGGC (Demo or Die)
Hä? Was willst du?
Und wie schalte ich bilineare Filterung ab??
mfg.
-
joomoo schrieb:
Die Lösung? Ne, eigentlich nicht.
mfg.Doch, war es. Du wusstest nicht, wieso der grüne Rand da ist, ich habs dir gesagt.
Und weil ich nett bin nehm ich dir die restlichen Schlussfolgerungen auch noch ab, dafür schlägst du nacher deinen Kopf gegen die Wand, weil du nicht selbst gedacht hast, OK?
Also: Das bilineare Filtering sorgt dafür, dass die Nachbarpixel in die Farbe miteinbezogen werden. Daraus folgt, das auch die Farbe des Transparenten Bereiches, die man normalerweise nicht sieht weil der Alphawert 255 ist, auch miteinbezogen wird. Das äussert sich in einem Rand in der jeweiligen Farbe. Normalerweise stört das nicht, weil das originale Bild unter der Transparenz "versteckt" ist (das Bild wird mit Transparenz abgespeichert). Wenn du allerdings mit Colorkeying arbeitest, funktioniert das nicht. Mogliche Lösungen:
Speicher das Bild mit Originalfarben unter der Transparenz ab, WIE VORGESCHLAGEN
oder
Setz die Farbe unter der Transparenz auf einen Wert, von dem du hoffst, das er nicht stört (zB der Durchschnitt aller Farben), WIE VORGESCHLAGEN
oder
Verzichte auf Bilineare Filterung, WIE VORGESCHLAGEN
ausserdem noch ein Gratisvorschlag, der mir grade einfällt:
Setze alle Nachbarpixel eines grünen Pixels auch auf Transparent (auf das wärst auch du gekommen), dann funkt bilinear, nur bei anisotrop kanns noch Probleme geben.
-
joomoo schrieb:
Und wie schalte ich bilineare Filterung ab??
Indem Du Dich mit der API Deiner Wahl (OpenGL?) näher beschäftigst...
-
ChockoCookie schrieb:
Doch, war es. Du wusstest nicht, wieso der grüne Rand da ist, ich habs dir gesagt.
Doch wusste ich und zwar von Anfang an. Schau dir mal meinen ersten Beitrag an. Da schreibe ich:
Jetzt habe ich das Problem, dass am Rand der Textur ein grüner Balken ist, da OpenGL ja beim vergößern weich zeichnet, und zwischen den Pixeln Farbüberläufe erstellt.
Und dieses weichzeichnen ist das bilineares Filtern. Wusste halt nur nicht den Namen.
ChockoCookie schrieb:
Also: Das bilineare Filtering sorgt dafür, dass die Nachbarpixel in die Farbe miteinbezogen werden. Daraus folgt, das auch die Farbe des Transparenten Bereiches, die man normalerweise nicht sieht weil der Alphawert 255 ist, auch miteinbezogen wird.
Ja, das habe ich mir auch schon gedacht.
ChockoCookie schrieb:
Das äussert sich in einem Rand in der jeweiligen Farbe. Normalerweise stört das nicht, weil das originale Bild unter der Transparenz "versteckt" ist (das Bild wird mit Transparenz abgespeichert).
Unter Transparenz versteckt ist? Hä? Das versteh ich nicht ganz. Tut mir leid.
ChockoCookie schrieb:
Wenn du allerdings mit Colorkeying arbeitest, funktioniert das nicht.
Warum nicht? Versteh ich nicht ganz. Hab ich ja auch schonmal erklärt: OpenGL kriegt nur ein Array, kein Bild. Und ob der AlphaKanal von Anfang an drinn war oder nicht, weiß OpenGL gar nicht. Oder reden wir hier nicht vom Alpha-Kanal???
ChockoCookie schrieb:
Setz die Farbe unter der Transparenz auf einen Wert, von dem du hoffst, das er nicht stört (zB der Durchschnitt aller Farben), WIE VORGESCHLAGEN
Ist eine Notlösung. Gefällt mir nicht so.
ChockoCookie schrieb:
Verzichte auf Bilineare Filterung, WIE VORGESCHLAGEN
Wie geht das? Hab ich schon gefragt.
ChockoCookie schrieb:
Setze alle Nachbarpixel eines grünen Pixels auch auf Transparent (auf das wärst auch du gekommen), dann funkt bilinear, nur bei anisotrop kanns noch Probleme geben.
Gar nicht mal so schlecht. Nur es gehen dann halt ein paar Pixel verloren. Aber wenn ich recht bedenke ist das nicht so schlimm. Werde ich mal ausprobieren.
War ich nicht drauf gekommen, ich hatte mir gedacht, die grünen Pixel am Rand mit der Benachbarten Farbe zu belegen, also sozusagen den untransparenten bereich zu vergrößern. Das war mir dann zu kompliziert. Deine Lösung ist besser, werde ich gleiche mal ausprobieren. DANKE!Sgt. Nukem schrieb:
Indem Du Dich mit der API Deiner Wahl (OpenGL?) näher beschäftigst...
Ich hab jetzt mal in der Referenz von OpenGL gesucht, aber nichts zum THema bilinear gefunden. Ich glaube nicht das TGGC das mit GL_LINEAR meint oder? Wenn ja, sollte er mal genauer lesen, dass sagte ich nähmlich schon auf Seite 1, dass ich darauf nicht verzichten will.
mfg.
-
*plonk*
-
joomoo schrieb:
ChockoCookie schrieb:
Verzichte auf Bilineare Filterung, WIE VORGESCHLAGEN
Wie geht das? Hab ich schon gefragt.
Sgt. Nukem schrieb:
Indem Du Dich mit der API Deiner Wahl (OpenGL?) näher beschäftigst...
Ich hab jetzt mal in der Referenz von OpenGL gesucht, aber nichts zum THema bilinear gefunden. Ich glaube nicht das TGGC das mit GL_LINEAR meint oder? Wenn ja, sollte er mal genauer lesen, dass sagte ich nähmlich schon auf Seite 1, dass ich darauf nicht verzichten will.
WTF???

Und woher soll TGGC als DirectX-ler wissen, wie man Dein OpenGL-Problem löst...

-
Sgt. Nukem schrieb:
WTF???

Und woher soll TGGC als DirectX-ler wissen, wie man Dein OpenGL-Problem löst...

Gar nicht? Dann soll er auch nicht antworten, wenn er die Lösung nicht weiß oder keinen sinnvollen Vorschlag hat.
mfg.
-
joomoo schrieb:
Dann soll er auch nicht antworten, wenn er die Lösung nicht weiß oder keinen sinnvollen Vorschlag hat.
Was erzählst du? Ich hab doch von Anfang an gesagt, was du machen muss. Vielleicht solltest du es mal lesen.
Bye, TGGC (Demo or Die)
-
joomoo schrieb:
Sgt. Nukem schrieb:
WTF???

Und woher soll TGGC als DirectX-ler wissen, wie man Dein OpenGL-Problem löst...

Gar nicht? Dann soll er auch nicht antworten, wenn er die Lösung nicht weiß oder keinen sinnvollen Vorschlag hat.
Spinner! Er hatte ja vernünftige Lösungsvorschläge gemacht, nur hat er sie Dir nicht auf dem Silbertablett serviert!

Vielleicht solltest Du ihm Deinen kompletten Code schicken, dann programmiert er das Ding weiter...
Hier: nehe.gamedev.net - bitte bei Tutorial 1 anfangen.

-
Sgt. Nukem schrieb:
joomoo schrieb:
Sgt. Nukem schrieb:
WTF???

Und woher soll TGGC als DirectX-ler wissen, wie man Dein OpenGL-Problem löst...

Gar nicht? Dann soll er auch nicht antworten, wenn er die Lösung nicht weiß oder keinen sinnvollen Vorschlag hat.
Spinner! Er hatte ja vernünftige Lösungsvorschläge gemacht, nur hat er sie Dir nicht auf dem Silbertablett serviert!

Vielleicht solltest Du ihm Deinen kompletten Code schicken, dann programmiert er das Ding weiter...
Hier: nehe.gamedev.net - bitte bei Tutorial 1 anfangen.

Vernünftige Lösungvorschläge? Bilineare Filterung ausschalten. Toller Vorschlag.
Außerdem hab ich den kompletten Code schon geschickt.
In den Nehe Tutorials steht auch nichts zu diesem Problem drinn.
TGGC schrieb:
Was erzählst du? Ich hab doch von Anfang an gesagt, was du machen muss. Vielleicht solltest du es mal lesen.
aha? Erster Beitrag von dir: Du schlägst vor bilineares Filtern auszumachen oder das grün wegzumachen. Ich sage das ich eine Lösung MIT bilinearem Filtern will und frage dich welche Farbe ich anstatt Grün denn nehmen soll - Keine Antwort von dir.
Nächster Vorschlag von dir: Ein Alphakanal mit weichem Übergang (was immer das sein mag). Auf die Frage wie das geht oder wie du dir das vorstellst: Keine Antwort!
Nächster Vorschlag, der eigentlich kein nächster Vorschlag ist: Ich soll bilineares Filtern ausmachen. Vielleicht solltest DU mal meine Beiträge lesen?
So, und das wars auch schon. Also wo soll ich ansetzen??? Ich hab keine Ahnung. Entweder beschreibst du mir das mit dem "weichen Alphakanal" nochmal oder du sagst mir, dass es keine andere Lösung als bilineares Filtern auszuschalten gibt. Und ne andere Farbe als grün nehmen, wird auch nichts nützen, da dann der Rand einfach ne andere Farbe haben wird.
-
Ich habe mir mal den ganzen Thread durchgelesen und konnte mir das Lachen echt nicht verkneifen, vorallem joomoo, wieso stellst du dich so stur an?
Es gibt den Lösungsvorschlag Billineares Filtering auszumachen. Nagut. Und du sagst, dass du das nicht willst, weil's dann scheisse (entschuldigung) aussehen würde. Aber du weißt auch nicht, wie man es abschaltet, wenn ich das richtig in Erinnerung habe. *Woher* weißt du dann, wie es aussieht, wenn du es abschaltest?
-
xindon schrieb:
Ich habe mir mal den ganzen Thread durchgelesen und konnte mir das Lachen echt nicht verkneifen, vorallem joomoo, wieso stellst du dich so stur an?
Es gibt den Lösungsvorschlag Billineares Filtering auszumachen. Nagut. Und du sagst, dass du das nicht willst, weil's dann scheisse (entschuldigung) aussehen würde. Aber du weißt auch nicht, wie man es abschaltet, wenn ich das richtig in Erinnerung habe. *Woher* weißt du dann, wie es aussieht, wenn du es abschaltest?
Ich gehe mal davon aus das man es mit GL_NEAREST anstatt GL_LINEAR als Textur Parameter ausschalten. Wusste nicht, das man dieses "Weichzeichnen" wie ich es zuerst genannt hab Bilineares Filtern nennt. Weiß es immer noch nicht, da mich auch keiner Aufklärt. Ich dachte halt auch zuerst, das TGGC was ganz anderes meint. Dann habe ich einfach mal bei google gesucht und eine beschreibe zu bilinearem Filtern gefunden. Und dann konnte ich mir natürlich vorstellen wie es aussieht.
Jetzt habe ich eine Frage:Stelle ich bilineares Filtern mit
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
ab?Wenn ja:
Das sieht scheisse aus, und das meinte ich auch von Anfang an, mit dem Weichzeichnen.Wenn nein:
Wie stell ich es dann aus? Tut mir leid, aber ich hab bei google und auf opengl.org nichts zu diesem Thema gefunden.
-
joomoo schrieb:
Ich sage das ich eine Lösung MIT bilinearem Filtern will und frage dich welche Farbe ich anstatt Grün denn nehmen soll - Keine Antwort von dir.
[...]
Entweder beschreibst du mir das mit dem "weichen Alphakanal" nochmal oder du sagst mir, dass es keine andere Lösung als bilineares Filtern auszuschalten gibt. Und ne andere Farbe als grün nehmen, wird auch nichts nützen, da dann der Rand einfach ne andere Farbe haben wird.Als weichen Übergang würde ich einen Gradienten von 0 nach 255 im Alphakanal bezeichnen, aber keine Ahnung was du dir darunter vorstellst. Da du sowas wolltest, müsst du ja wissen, wie es aussieht. Und wieso sollte eine andere Farbe als Grün nichts nützen? Alphablending geht mit jeder Farbe. Und egal welche du nimmst: wenn es kein Grün ist, kommt kein grüner Balken. Versprochen.
Bye, TGGC (Demo or Die)