奇怪的OpenGL像素缺陷

时间:2013-04-29 23:33:51

标签: opengl

我的用户中有一小部分(<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游戏。所以我相信我的代码有问题。

以下是视觉文物的图片:

visual artifacts

这是一张没有视觉瑕疵的图片(忽略操作系统中的差异):

without visual artifacts

虽然我的游戏将最终渲染比例缩放为2倍,但是在执行1x渲染后,通过单次调用glSubTexImage2D来完成此操作。这意味着第一个屏幕截图中的工件在像素加倍之前出现(因此为什么工件也像素加倍)。因此像素加倍本身不是问题的根源。

对可能导致这种情况的任何想法?我目前无法测试。绝大多数用户(包括我自己)都没有遇到过视觉瑕疵。

编辑(4月30日):波兰用户告诉我他/她的视频体验这些文物并且是“nVidia 9500 GS”。不确定这是否意味着9500M GS9500 GT,但两者看起来都相当现代。

1 个答案:

答案 0 :(得分:6)

有90%的可能性,遇到此问题的用户在其nVidia控制面板中的某些非默认值上具有纹理质量切换。在你的情况下,GL_NEAREST应该有助于避免这样的问题(因此它不会平均放大图像的邻居纹素)。但首先,请他将nVidia控制面板设置设为默认值,以证明或破坏理论。