Ich habe eine OpenGL-basierte GUI. Ich verwende Superauflösung, um verschiedene Skalen handhaben zu können. Anstatt die Bilder zu skalieren, werden sie verkleinert (es sei denn, jemand läuft mit einer Auflösung von 4000x4000 +).OpenGL Super Auflösung Probleme
Das Problem ist, OpenGL scheint nicht reibungslos zu skalieren. Ich habe Artefakte, als wäre die Skalierung der nächste Nachbar. (ZB die Textkanten sind blockartig, auch wenn sie nicht im Original) sind
Dies sind die Einstellungen, die ich verwende:
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
Hier ist ein Beispiel der Artefakte, die Skalierung 2: 1 I glauben. Vielleicht ist es aber nicht genau wegen Fensterkanten und so.
Sie können den linken Rand sieht perfekt (es ist allerdings nicht ist), aber der rechte Rand hat in es seltsam bricht. Die ursprüngliche Grafik ist perfekt symmetrisch und keine Artefakte.
Ich habe versucht GL_NEAREST, GL_LINEAR. Kein Mipmapping so ...
Sicher OpenGL ist nicht so schlecht bei der Skalierung? Ich möchte etwas wie bi-kubische Skalierung oder etwas, das gute Ergebnisse erzielen wird.
Ich verwende OpenGL 1.1. Ich könnte möglicherweise Bilder vorskalieren, aber ich würde das jedes Mal tun müssen, wenn sich die Fenstergrößen ändern und in der CPU langsam sein könnten.
Ich habe gezackte Ränder auf einigen Bildern auch. Der springende Punkt der Super-Auflösung war, all das zu vermeiden;/
Gibt es einige Einstellungen, die ich vermisse?
Superresolution ist etwas irreführend, da es sich um Downsampling handelt. Nichtsdestoweniger sollte man, wenn man vom nächsten zum linearen Wert wechselt, den Unterschied bei kleiner Skalierung sehen, z. B. um 1/1,2 des Originals. 'GL_NEAREST' ist sicher die nächste Nachbarinterpolation. – mainactual