Komische Ränder von Texturen in OpenGL



  • Mir ist aufgefallen, dass bei manchen Grafikkarten in OpenGL-Anwendungen die Ränder von Texturen nicht richtig gezeichnet werden. Ich hab mal einen Screenshot gemacht: http://watteimdocht.de/jan-nik/Bildschirmfoto.png

    Ist auch bei meinen eigenen Anwendungen so, ich find das ziemlich häßlich. Bei Intel-Karten ist mir aufgefallen, dass es nur unter Linux auftritt, bei nVidia bei Windows und Linux und bei der ATI-Karte von meinem Freund gar nicht.

    Weiß jemand warum das so ist?



  • Ich könnt mir vorstellen, dass es da zu Rundungsungenauigkeiten kommt. Je nach Implementierung und Hardware merkt man es oder halt nicht.



  • Ich sehe auf dem Screenshot keine komischen Ränder oO
    Aber "Probleme an Rändern" härt sich stark nach Aliasing an.



  • this->that schrieb:

    Ich sehe auf dem Screenshot keine komischen Ränder oO

    Musst genau hingucken, sind nur 1 Pixel groß. Unter anderem der Strich in der Lupe.

    Aber "Probleme an Rändern" härt sich stark nach Aliasing an.

    Ne, das mein ich nicht.

    Ich habe heraus gefunden, dass man mit glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); das Problem beheben kann. Aber warum unterscheidet es sich denn überhaupt zwischen verschiedenen Grafikkarten?



  • Ich nehme an das hängt von mehreren Faktoren ab
    * wo der "Pixel Center" liegt (konnte man bei einigen älteren Treibern umstellen)
    * wie MipMapping & der trilineare Filter implementiert sind
    * bei welcher Entfernung der Treiber/die Grafikkarte anfängt das nächstkleinere Mip Level dazuzublenden

    Wenn du es mit "clamp" lösen kannst ist ja alles gut. Wenn man Texturen hat wo mehrere Grafiken drauf sind wird es oft so gemacht dass man einfach ein paar Pixel zwischen den Grafiken "frei" lässt (also per Alpha durchsichtig macht bzw. ohne Alpha: einfach die Farben so "weiterzieht" wie es mit "clamp" aussehen würde).


Log in to reply