我正在用java编写一个游戏,它使用LWJGL的原生OpenGL绑定来渲染OpenGL中的游戏图形。当我在Linux上运行游戏(在具有不同图形卡的2台不同计算机上进行测试)时,一切正常。但是,当我在Windows上运行游戏时,显示屏上会出现奇怪的垂直1像素宽条。
以下是问题的图片:
我在三台使用不同显卡的Windows计算机上试过这个,所有这些显卡都有最新的驱动程序。
有趣的是,每次运行程序时,条形都出现在完全相同的位置,即使每次生成的地形都不同。
我很困惑为什么会出现这些竖条。我用来渲染地形的代码是
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// draw the terrain
glDisable(GL_BLEND);
glDisable(GL_LINE_SMOOTH);
glColor3f(0F, 0F, 0F);
glBegin(GL_LINES);
for (int x = 0; x < Constants.NUM_WIDE; x++) {
glVertex2i(x, 0);
glVertex2i(x, originalHeightMap[x]);
}
glEnd();
//draw a smooth line strip on top of the terrain to anti-alias it
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);
glBegin(GL_LINE_STRIP);
for (int x = 0; x < Constants.NUM_WIDE; x++) {
glVertex2i(x, originalHeightMap[x]);
}
glEnd();
此代码应填充整个宽度。
另一个有趣的事实是,如果你仔细观察,你应该能够在白色条纹所在的地方看到地形顶部的平滑线条。这个白条问题以某种方式消除了作为地形一部分的黑线,但没有删除顶部反锯齿的线条。
我在渲染地形时尝试打开和关闭混合,两种情况都出现了同样的问题。
有谁知道如何解决这个问题,或者为什么它只出现在Windows上?