2011-01-12 18 views
2

Ich habe ein paar Fragen über glTexParameter und FilterungglTexParameter und Filterung in OpenGL und GLSL?

1) Was ist der Umfang bei der Anwendung eines glTexParameter (speziell die Filterung)? Hier ist ein Szenario:

  • Binden Sie eine Textur. Stellen Sie die Filter auf LINEAR
  • Setzen Sie die Textur auf "Sampler1" eines Shaders
  • Binden Sie eine andere Textur. Legen Sie seine Filter auf NÄCHSTE
  • Set, die auf „Sampler2“ eines Shader-Textur
  • Draw

Wenn ich die Texturen in einem Shader verwenden, wird ein linear und die andere sein nächste? Oder werden sie beide am nächsten sein, weil es zuletzt genannt wurde?

2) Ist es möglich, die Filtermethode in GLSL zu setzen?

Antwort

5

1) Der Filtermodus ist ein Parameter des Texturobjekts, d. H. Der Filtermodus gilt nur für die Texturobjekte, die beim Einstellen des Filtermodus aktiv waren.

2) Der Filtermodus ist ein Parameter des Samplers, der während der gesamten Shader-Ausführung konstant sein muss. Daher kann es nicht innerhalb des Shaders geändert werden. Es ist jedoch möglich, einzelne Texturlevel und Samples ohne jegliche Filterung zu adressieren, die verwendet werden können, um benutzerdefinierte Filtermethoden zu implementieren (obwohl diese viel weniger performant sind).

2

Das gleiche Ding stört mich auch, aber als ich Ihren Beitrag sah, kam ich auf eine Lösung, die beide am selben Shader am nächsten & linear zu verwenden ist.

Zuerst legen Sie die Textur auf linear. Wenn Sie den nächsten benötigen, klemmen Sie einfach die UV-Position in die Mitte des Pixelrasters. Basierend auf dem Verhalten der linearen Interpolation wird das Ergebnis wie am nächsten sein, hoffe ich.