我的用戶的一個非常小的比例(< 1%)正在使用我的遊戲的OpenGL UI發生奇怪的失真。看來我的像素完美的投影設置:奇怪的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);
正在導致他們的系統出現問題。而且我一直沒有收集有關他們系統的細節,但我相信他們可以成功運行類似的OpenGL遊戲。所以我相信我的代碼有問題。
這裏是視覺假像的照片:
這裏是沒有視覺假象圖片(忽略OS差):
雖然我遊戲將最終渲染縮放爲2倍,通過在1x渲染已經執行之後通過一次調用glSubTexImage2D
來實現Rmed指。這意味着第一個屏幕截圖中的工件出現在像素加倍之前(因此爲什麼工件也像素加倍)。所以像素倍增不能成爲問題的根源。
有什麼想法可能會導致此?我目前無法測試。絕大多數用戶(包括我自己)都沒有體驗視覺文物。
編輯(4月30日):波蘭用戶告訴我他/她的視頻卡遇到這些工件,並且是「nVidia 9500 GS」。不知道這是否意味着9500M GS或9500 GT,但都顯得相當現代。
'0.375'從哪裏來? – 2013-04-29 23:43:38
@BenVoigt它來自OpenGL紅皮書。請參閱[this](http://glprogramming.com/red/appendixg.html#name1)或[this](http://msdn.microsoft.com/en-us/library/ms537007%28VS.85%29。 ASPX)。 – 2013-04-29 23:46:15
事實上,它只發生在某些表面2)發生在不同的表面上,對於不同的表面應該是問題代碼出現的一個重要提示。 – Patashu 2013-04-29 23:46:18