【问题标题】:Antialiased lines using jogl on Windows 7 look horrible在 Windows 7 上使用 jogl 的抗锯齿线看起来很糟糕
【发布时间】:2012-01-12 21:53:07
【问题描述】:

我的 java 应用程序使用 jogl 创建带有重叠网格的表面。网格线是抗锯齿的。但是,在 Windows 上,抗锯齿完全是垃圾,除非我在表面上添加一个小的 alpha 值。以下是三个平台上同一场景的屏幕截图:

Mac OS X:

Ubuntu 11.10:

Windows 7:

带有 alpha=0.01 的 Windows 7:

创建它的基本过程如下:

gl.glPushAttrib( GL.GL_ALL_ATTRIB_BITS );
gl.glEnable(GL.GL_POLYGON_OFFSET_FILL);
gl.glPolygonOffset(1.0f, 1.0f); 
drawSurface(gl);
gl.glDisable(GL.GL_POLYGON_OFFSET_FILL);
gl.glPopAttrib();

gl.glDisable( GL.GL_LIGHTING );
gl.glDepthFunc(GL.GL_LEQUAL);
float[] c = {0, 0, 0, 0.5f};
gl.glColor4fv(c, 0);//the alpha here gets overridden if one is specified for the surface (which is why the Windows-with-alpha produces a darker grid)
drawGrid(gl);
gl.glDepthFunc(GL.GL_LESS);
gl.glEnable( GL.GL_LIGHTING );

drawSurface() 方法还在为曲面创建多边形之前执行以下操作(使用 GL_TRIANGLE_STRIP 基元):

gl.glPushAttrib(GL.GL_LIGHTING_BIT);
gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE);
gl.glEnable(GL.GL_COLOR_MATERIAL);

drawGrid() 方法像这样设置抗锯齿:

gl.glEnable(GL.GL_BLEND);
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL.GL_LINE_SMOOTH);
gl.glHint(GL.GL_LINE_SMOOTH_HINT, GL.GL_NICEST);

网格本身是使用 GL_LINE_STRIPs 创建的

我已经阅读了OpenGL documentation regarding line anti-aliasing 并尝试了多边形偏移示例here

至于硬件,我有双启动 IBM ThinkPad(64 位四核),带有集成的 nVidia 3100M 卡和带有 ATI Radeon 的 Intel Core 2 Duo iMac。由于 Ubuntu 和 Windows 在相同的硬件上运行,我知道这不是硬件问题。

我正在寻找改进 Windows 上网格线抗锯齿的建议。

【问题讨论】:

  • 您是否尝试过在表面稍上方绘制线条?我注意到您切换到 gl.glDepthFunc(GL.GL_LEQUAL),但由于 FP 舍入,您仍然可能遇到 z 缓冲问题。
  • 此外,您链接到的 OpenGL 文档建议在绘制线条时禁用 写入 到深度缓冲区,即使您仍想使用它来剪辑它们 (glDepthMask_FALSE(GL_FALSE) )。
  • @RussellZahniser:我正在使用 GL_POLYGON_OFFSET_FILL 来实现这一点。
  • @RussellZahniser 是的,我尝试设置 gl.glDepthMask( false ) - 没有任何区别。
  • Java 口号:一次编写,到处调试。

标签: windows opengl jogl antialiasing


【解决方案1】:

原来我没有尝试过(我以为我有,但我没有正确重建和测试它) gl.glDepthMask(假);

正确添加确实大大改善了网格的抗锯齿线的碎片。

也就是说,我对线条的外观仍然不是 100% 满意,但是,现在,这个问题已经解决了。这是“改进的”网格线的屏幕截图:

虽然这是一个很大的改进,但它仍然不如 Mac OS X 甚至 Ubuntu。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多