Bardzo mały odsetek (< 1%) moich użytkowników doświadcza dziwnych zniekształceń dzięki interfejsowi OpenGL w mojej grze. Wygląda na to, że moja konfiguracja wyświetlania doskonałej pod względem pikseli:Dziwne niedoskonałości pikseli OpenGL
glViewport(0, 0, clientSizeWidth, clientSizeHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, clientSizeWidth, clientSizeHeight, 0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
double transAmount = 0.375;
glTranslated(transAmount, transAmount, 0.0);
Powoduje problemy w swoich systemach. Nie udało mi się zebrać szczegółów na temat ich systemów, ale sądzę, że mogą one z powodzeniem prowadzić podobne gry OpenGL. Tak wierzę, że mój kod jest winny.
Oto obraz artefaktów wizualnych:
A oto obraz bez artefaktów wizualnych (ignorować różnicy OS):
chociaż mój gra skaluje końcowy render do 2x, robi to jednym połączeniem do glSubTexImage2D
po wykonaniu renderowania 1x rmed. Oznacza to, że artefakty na pierwszym zrzucie były obecne przed podwojeniem pikseli (stąd też artefakty są również podwajane w pikselach). Więc podwojenie pikseli nie może być źródłem problemu.
Jakieś myśli o tym, co może to spowodować? Obecnie nie mam możliwości sprawdzenia. Zdecydowana większość użytkowników (łącznie z mną) nie doświadcza żadnych artefaktów wizualnych.
Edytuj (30 kwietnia): Polski użytkownik poinformował mnie, że jego videocard przeżywa te artefakty i jest "nVidia 9500 GS". Nie wiem, czy oznacza to, że jest to 9500M GS lub 9500 GT, ale oba wydają się dość nowoczesne.
Skąd pochodzi '0.375'? –
@BenVoigt Pochodzi z Red Booku OpenGL. Zobacz [to] (http://glprogramming.com/red/appendixg.html#name1) lub [this] (http://msdn.microsoft.com/en-us/library/ms537007%28VS.85%29. aspx). –
Fakt, że 1) dzieje się tylko na niektórych powierzchniach 2) dzieje się w różnych skalach, ponieważ różne powierzchnie powinny być dużą wskazówką, gdzie będzie kod problemu. – Patashu