hi, so ein Problem hatte ich irgendwie schonmal, naja ich habe eine 2D OpenGL Anwendung in der eine Tilebasierende Spielwelt gezeichnet wird. Als Textur verwende ich eine große Texture, aus der dann die entsprechenden Texturkoordinaten ermittelt werden.
diese texture reicht vom pixel 0; 0 bis 63; 63 ist also 64*64 pixel groß
das hässliche ist nun, dass zwischen den einzelnen feldern striche sind (255, 0, 255 - die farbe in der die anliegenden texturen sind). also wird scheinbar zuviel von der textur verwendet. ich möchte diese "vermischung" nicht. hier ein screenshot:
die texture (unkomprimiert [BMP als zip]) gibt es hier:
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also wenn das selbst mit GL_NEAREST / GL_NEAREST auftritt dann kann eigentlich nur etwas mir deinen Koordinaten nicht stimmen. Auch wenn ich da so spontan keinen Fehler erkenne. Wobei ich vermuten würde, dass deine Textur koordinaten 1 Pixel zu groß sind.
Mit meiner Bildschirmlupe kann ich auch vertikal einen ganz leichten Verlauf richtung Rosa erkennen. Nicht viel aber nur ganz leicht.
Als Test kann du auch mal eine angepasste Textur benutzen. Also eine die einen Rand in einer anderen Farbe hat. Blau oder so was. Dann kannst du zu mindest erkennen on der Rand deines Tiles komplett richtig dargestellt wird oder nicht.
Wobei du das aber auch nicht Pixelgenau darstellst. Dadurch müssen die Texturen kleiner gerechnet werden evtl liegt es daran, dass es auf dem einen System geht und auf dem Anderen nicht.
wenn ich einen rand in einer anderen farbe nehme, wird selbstverständlich dieser dargestellt
ich hab das ganze aber mal auf einem schul-pc getestet und da sieht alles so aus, wie es aussehen soll.
selbst wenn ich mich massiv schnell über die welt bewege sieht alles völlig i.O. aus. Nur will ich, dass
wenn ich ein Spiel entwickle, es bei mir auch so aussieht, wie es soll
Der Fehler tritt auch im moment nur auf, wenn ich mich in der welt bewege, dann "schimmern" die linien
(ähnliche fehler hab ich zT auch manchmal bei programmen, die etwas auf den desktop zeichnen, bzw schreiben (text) [pinker rand])
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Na ja. Wenn der Rand dargstellt wird heißt das es wird nichts abgeschnitten. Aber wenn du zu viel zeichnest dann merkst du da ja nichts. Höchstens dadurch, dass neben dem Rand noch eine andere Farbe existiert.
Aber skaliere das einfach mal alles. Wie gesagt sieht es für mich nicht so aus als ob es Pixelgenau gezeichnet wird sondern kleiner. Da du keine MipMaps hast muss die Grafikkarte das kleiner Filtern. Kann sein, dass da der ein oder andere etwas anders macht.
Aber probier mal bei deiner Textur etwas anderes als Pink und schau wie es sich verhält. Die Linie sollte sich dann anders färben.
Schrift auf dem Desktop. Also ich weiß nicht wie das zusammengehören soll.
Ich hoffe ich hab das mit skalieren richtig verstanden, zumindest habe ich das bild mittels glScalef 4fach vergrößert und man erkennt leicht, dass dort ein bissl pink verwendet wird. allerdings ist dieser effekt auf normaler größe nur zu sehen, wenn ich bewegung der fehler drin hab (also mittels translate navigiere)
nehme ich statt clfuchsia eine andere farbe, werden die rillen eben in dieser dargestellt
wenn ich bei der graka anisotropische filterung und antialiasing einschalte wird der effekt wieder deutlicher
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
So wie ich das sehe, hast du einen Fehler in deinen Koordinaten, wie Lossy es schon angesprochen hat, da normalerweise solche Texturprobleme nicht auftreten. Lösungen wären daneben aber auch, anstatt dem penetranten Lila, welches du ja offensichtlich sowieso nicht rausmaskst, ein Schwarz zu nehmen, das fällt zumindest bei der zweiten Variante (letzter Screenshot) nicht auf.
Gruß Lord Horazont
_________________ 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
Außerdem ist es besser, bei der Berechnung der Texturkoordinaten Double-Precision
zu nehmen statt Single. Die End-Koordinate sollte auf jeden Fall eine Punktlandung
bei 1.0 machen - bei 0.9995 kann es zu "Cracks" kommen.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
GL_CLAMP_TO_EDGE geht hier leider nicht. Es handelt sich bei der Textur ja nur um einen Teil der ganzen Textur und das GL_CLAMP_TO_EDGE wirkt nur am Rand der gesammten Textur.
Das mit Single und Double wäre sicher ein Versuch wert. Wobei ich aber eigentlich auch nur mit Singles arbeite und so etwas bisher noch nicht hatte. Aber wenn die Werte ungünstig getroffen wurden.
Im übrigen Martin Herzlich Willkommen im Forum. Was ist das eigentlich für ein gut aussehendes Projekt? Wie haben da so eine kleine Ecke wo man Projekte vorstellen kann.
Registriert: Mi Mai 23, 2007 10:56 Beiträge: 6 Wohnort: Braunschweig
Zitat:
GL_CLAMP_TO_EDGE geht hier leider nicht. Es handelt sich bei der Textur ja nur um einen Teil der ganzen Textur und das GL_CLAMP_TO_EDGE wirkt nur am Rand der gesammten Textur.
Ja, stimmt. Das war ist es also nicht. Diese Problem mit den Cracks taucht immer wieder mal auf. Meist sind die Texturkoordinaten schuld, es kann aber auch an den Vertex-Daten liegen. OpenGL ist hier ziemlich pingelig, was die Genauigkeit angeht.
Zitat:
Das mit Single und Double wäre sicher ein Versuch wert. Wobei ich aber eigentlich auch nur mit Singles arbeite und so etwas bisher noch nicht hatte. Aber wenn die Werte ungünstig getroffen wurden. Wink
Ich hatte schon mal so einen Fall, wo die Berechnung der Texturkoordinaten mit "double" das Problem gelöst hat.
Zitat:
Im übrigen Martin Herzlich Willkommen im Forum. Was ist das eigentlich für ein gut aussehendes Projekt? Wie haben da so eine kleine Ecke wo man Projekte vorstellen kann. Wink
Das Programm heißt "Diercke Globus". Unsere Firma hat es für den Westermann Schulbuch-Verlag entwickelt.
So wie ich das sehe, hast du einen Fehler in deinen Koordinaten, wie Lossy es schon angesprochen hat, da normalerweise solche Texturprobleme nicht auftreten. Lösungen wären daneben aber auch, anstatt dem penetranten Lila, welches du ja offensichtlich sowieso nicht rausmaskst, ein Schwarz zu nehmen, das fällt zumindest bei der zweiten Variante (letzter Screenshot) nicht auf.
Gruß Lord Horazont
das lila wird ja noch weggemaskt, aber dann hab ich da halt löcher, mit dem lila sieht man den fehler besser.
und wenns einen fehler gibt, wo liegt dieser ?
wenn ichs auf double umstelle bringts nichts, aber ich habs ja auf nem anderen rechner schon getestet, und da ging das, wie gesagt, auf manchen rechnern macht er den fehler, auf manchen anderen net.
hm momentan habe ich die streifen nur horizontal, das ist echt skuril Oo und auch nur wenn ich mich auf bestimmte positionen bewege (deshalb sieht man das ja auch in der bewegung)
Hi, ich hab mit Texturen noch recht wenig Erfahrung, also bitte fallt nicht alle über mich her, falls ich hier nur Unsinn poste
Was mir aufgefallen ist bzw. ich mich frage:
a) wieso glTexCoord2f(u + xlen, v + xlen); müsste hier nicht eigentlich glTexCoord2f(u + xlen, v + ylen); stehen?
Wo doch auch v := ylen * ty; ist... wobei das hier natürlich egal sein sollte, weil es sich ja um eine quadratische Textur handelt.
b) vielleicht hilft´s, wenn Du statt xlen := texsize / w; bzw. ylen := texsize / h;
xlen := (texsize-1) / w; und ylen := (texsize-1) / h; verwendest, dann solltest Du bei einer Rundung im Zweifellsfall zu kurz und damit "im Grüne" landen.
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.