Registriert: Sa Apr 14, 2012 14:28 Beiträge: 52
Programmiersprache: c++
Hallo zusammen,
ich habe mal wieder ein Problem und ich hoffe ihr könnt mir erneut helfen. Ich spiele derzeit an der Menü-Führung meines kleinen 2D-Spieleprojektes herum. Jetzt will man sich natürlich nicht immer an diese 2er-Potenzregel bei den Abmaßen seiner texturierten Objekte halten müssen (in meinem Fall Buttons). Um nun meinem Button eine Textur beliebiger Größe zuweisen zu können gehe ich wie folgt vor: - Ich lade zunächst ein Bild. - Danach erweitere ich seine Kantenlängen auf die nächst höhere 2er Potenz. - Anschließend wird die Textur gebunden - Zuletzt berechne ich mir das Verhältnis zwischen der Original-Länge und der erweiterten Kantenlänge, welches ich dann bei glTexCoord2d einsetze um die erweiterten Stellen auszublenden.
Das klappt soweit ganz gut, nur leider kommt es beim Resizen des Gl-Fensters oder betimmten Seitenverhältnissen zu einem Pixel weiten Linien am rechten oder oberen Rand. Für "nicht-erweiterte Texturen" springt ja GL-Clamp hier in die Bresche und löst das Problem, nur funktioniert das leider nicht für diese zurechtgestückelten Texturen. Mir ist klar, dass dies irgendwo durch eine Rundung verursacht wird und ich ggf mit einem Korrekturfaktor gegen steuern könnte, nur weiß ich leider überhaupt nicht, an welcher Stelle dieser vermeintliche Rundungsfehler erzeugt wird. Mir fallen zwar spontan ein paar Lösungsmöglichkeiten ein, diese wären aber nicht sonderlich elegant. Eine wäre Beispielsweise, die betroffenen Zeilen der Ausgangsbildes einfach beim erstellen der erweiterten Textur "in die Länge zu ziehen". Eine andere Möglichkeit, wäre mit Alpha-Werten herum zu spielen.
Als Bibliotheken (ich benutze C++, kein Delphi) verwende ich freeglut und glew. Ich hoffe ihr wisst Rat für diesen kleinen Schönheitsfehler.
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
such mal nach google i/o dort gibts einige Sessions die sich mit UI auf Android beschäftigen, da haste gleich alles wichtige zum Thema UI (Resize, Listen, Events etc.) im Schnellkurs auf Video ^^
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Merkürdige Antwort, Finalspace.
@Topic: Da es sich um Buttons handelt und du die ja vermutlich nicht skalieren willst, wird es vermutlich reichen, das Filtering auf GL_NEAREST zu stellen und 0.5/Breite bzw. 0.5/Höhe auf die jeweiligen Texturkoordinaten zu addieren.
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 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 Apr 14, 2012 14:28 Beiträge: 52
Programmiersprache: c++
Thx @ Lord Horazont: manchmal sieht man den Wald vor lauter Bäumen nicht. Ich habe den Filter auf Linear gelassen, aber wie du sagtest meine Koordinaten um 0,5 modifiziert. Das hat schon geholfen. Egal auf welche Größe ich das Fenster nun setze, keine ungewollten Linien mehr. Vielen Dank dafür.
Dennoch würde mich mal interessieren, an welcher Stelle dieser "Fehler" auftritt.
@Topic: Da es sich um Buttons handelt und du die ja vermutlich nicht skalieren willst, wird es vermutlich reichen, das Filtering auf GL_NEAREST zu stellen und 0.5/Breite bzw. 0.5/Höhe auf die jeweiligen Texturkoordinaten zu addieren.
grüße
Ähh, moment... da stimmt was nicht... Finalspace hat nix geschrieben sondern yunharla.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Oh verdammt. Aber… Du hattest doch auch mal so einen Bunten Avatar? . (Bergmann hat mich auch ne weile fertig gemacht, hab ihn mit seinem Half-Life-Avatar immer für Tak gehalten ). Sorry, yurnhala meinte ich natürlich .
@Troll: Naja, wenn ob der Fenstergröße Rundungsfehler oder so entstehen, die dann dafür sorgen, dass Interpolation stattfindet.
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 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: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Lord Horazont hat geschrieben:
Oh verdammt. Aber… Du hattest doch auch mal so einen Bunten Avatar? . (Bergmann hat mich auch ne weile fertig gemacht, hab ihn mit seinem Half-Life-Avatar immer für Tak gehalten ). Sorry, yurnhala meinte ich natürlich .
Nimm doch Links dann kommt das nicht mehr vor
Und naja fand die Vids halt sehr lehrreich, so von wegen wann und was man in FBOs cached, 9-patches usw. .... naja whatever ^^
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ok, ich hab jetzt Sessions nicht als Videos verstanden (stand da zwar, aber da war nen Zeilenumbruch zwischen…). Das nächste mal vielleicht am besten verlinken
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 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
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.