Hallo,
ich habe eine große Texture die mehrere Pics (Tiles) enthält.
Um an das jeweilige Tile zu kommen berechne ich entsprechend die Texcoordinaten soweit kein Problem.
Nur beim Rendern krieg ich die unschönen Ränder an den Texturen (im Prinzip sind das die Pixel des jeweiligen nächsten Tiles in der Texture).
Ich denke mal ein Problem ist wohl die ungenauigkeit der float's ich habs schon mit den unterschiedlichsten Filtern und Funktionen probiert, leider ohne
Erfolg. Wiess einer wie ich die Ränder 'sauber' kriege??
Wenn du am Rand immer Pixel von dem benachbarten Tile mitbekommst, dann hilft es vielleicht was die Randpixel des Tile am Rand nochmal zu wiederholen und so einen Rahmen drumherum zu legen.
Wenn du am Rand immer Pixel von dem benachbarten Tile mitbekommst, dann hilft es vielleicht was die Randpixel des Tile am Rand nochmal zu wiederholen und so einen Rahmen drumherum zu legen.
Also im Moment sind meine Tiles 64x64 groß und Du meinst ich solle die Tiles dann einfach 65x65 groß machen???
Ja das könnte was bringen und die Randpixel dann verdoppelt.
Tja, dann stimmen aber meine Texturekoordinaten-Berechnungen nicht mehr, wenn ich dann sage mein tile ist immer noch 64x64 dann hab ich ja wieder einen rand (1 pixel z.b). sowas in die richtung hab ich schon probiert, ich hab in meiner berechnung einfahcgesagt mein tile wäre 63x63 aber so funzt das nicht
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ist deine Textur von der Dimension 2^n*2^n? Wenn nicht, dann wird diese wenn du MipMaps verwendest nämlich durch gluBuildMipMaps auf eine solche Dimension gebracht, und der dort genutzte Filter kann dann dafür sorgen das Nachbarpixel "ineinander" verschwimmen.
Ansonsten würde ich es so machen wie es Lars gesagt hat, aber mit ner kleiner Erweiterung : Du machst also nen 66x66 Pixel breiten Kasten für eine Tile. In dessen Mitte kommt dann die 64x64 Textur, und den Rand der davon nicht ausgefüllt wird lässt du per Alpha ausblenden. Dann sollten auch keine Pixel mehr durch Filtering ineinander verschwimmen.
P.S. : Mehrere Tiles auf einer Textur sind sowieso je nach Verwendung eingeschränkt. Du kannst dann z.B. keine Texturwiederholung nutzen, aber wenn du das nicht brauchst ist das natürlich besser (weniger Statechanges, weniger Speicherverbrauch).
Ist deine Textur von der Dimension 2^n*2^n? Wenn nicht, dann wird diese wenn du MipMaps verwendest nämlich durch gluBuildMipMaps auf eine solche Dimension gebracht, und der dort genutzte Filter kann dann dafür sorgen das Nachbarpixel "ineinander" verschwimmen.
Ansonsten würde ich es so machen wie es Lars gesagt hat, aber mit ner kleiner Erweiterung : Du machst also nen 66x66 Pixel breiten Kasten für eine Tile. In dessen Mitte kommt dann die 64x64 Textur, und den Rand der davon nicht ausgefüllt wird lässt du per Alpha ausblenden. Dann sollten auch keine Pixel mehr durch Filtering ineinander verschwimmen.
P.S. : Mehrere Tiles auf einer Textur sind sowieso je nach Verwendung eingeschränkt. Du kannst dann z.B. keine Texturwiederholung nutzen, aber wenn du das nicht brauchst ist das natürlich besser (weniger Statechanges, weniger Speicherverbrauch).
Also meine Texture ist 640x640 gross an dem kanns nicht liegen.
Wenn ich nen Kasten mache 66x66
1. wie krieg ich dann all meine Tiles in ne 640 breite texture ???
2. stimmen dann meine berechnungen für die Texturkoordinaten noch ???
oder hab ich es falsch verstanden
Ne Texturwiederholung brauch ich nicht, ich habs deshalb so gemacht wegen der Statechanges, wie Du schon gesagt hast
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
wolf_10 hat geschrieben:
Also meine Texture ist 640x640 gross an dem kanns nicht liegen.
Dann liegts doch daran. 640x640 ist keine 2^n-Dimension und wird daher von gluBuildMipMaps in passende Dimensionen gewandelt und dabei dann auch gefiltert.
Also meine Texture ist 640x640 gross an dem kanns nicht liegen.
Dann liegts doch daran. 640x640 ist keine 2^n-Dimension und wird daher von gluBuildMipMaps in passende Dimensionen gewandelt und dabei dann auch gefiltert.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die nächst größere ist 1024x1024. Bin mir nicht sicher aber größen wie 512x256 sind auch möglich. Allerdings ist die kleinste passende form bei dir wohl die 1024x1024.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
2^n bedeutet, dass die textur z.b. 2^4 = 2x2x2x2 = 16 Pixel breit bzw. hoch sein muss. Also 64x64 oder 128x128 oder 1024x512 Pixel. und 640x640 lässt sich eben nicht dur 2^n ausdrücken.
Mitglieder in diesem Forum: Bing [Bot] und 21 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.