我的用户中有一小部分(<1%)的用户正在使用我的游戏的OpenGL UI遇到奇怪的失真。看来我的像素完美投影设置:
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游戏。所以我相信我的代码有问题。
以下是视觉文物的图片:
这是一张没有视觉瑕疵的图片(忽略操作系统中的差异):
虽然我的游戏将最终渲染比例缩放为2倍,但是在执行1x渲染后,通过单次调用glSubTexImage2D
来完成此操作。这意味着第一个屏幕截图中的工件在像素加倍之前出现(因此为什么工件也像素加倍)。因此像素加倍本身不是问题的根源。
对可能导致这种情况的任何想法?我目前无法测试。绝大多数用户(包括我自己)都没有遇到过视觉瑕疵。
编辑(4月30日):波兰用户告诉我他/她的视频体验这些文物并且是“nVidia 9500 GS”。不确定这是否意味着9500M GS或9500 GT,但两者看起来都相当现代。
答案 0 :(得分:6)
有90%的可能性,遇到此问题的用户在其nVidia控制面板中的某些非默认值上具有纹理质量切换。在你的情况下,GL_NEAREST应该有助于避免这样的问题(因此它不会平均放大图像的邻居纹素)。但首先,请他将nVidia控制面板设置设为默认值,以证明或破坏理论。