【问题标题】:Transparency issues with LWJGLLWJGL 的透明度问题
【发布时间】:2014-06-12 19:47:53
【问题描述】:

我正在使用 LWJGL 在 Java 中创建一个 CAD 应用程序。一切正常,但是,绘制的东西有点透明(不透明,但您可以看到正面和背面,这使得移动形状时非常混乱)。

你可以在下图中看到我的意思:

  

我想把里面/后面的线盖住。简单地说,前面的东西应该覆盖后面的一切,而不是被看穿。任何解决方案/提示?

编辑:

一些代码

 public static void main(String[] args)
    {
        Window window = new Window();
        initDisplay();
        gameLoop();
        cleanUp();
    }

public static void initDisplay()
    {
        try {
            Display.setDisplayMode(new DisplayMode(800,600));
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace();
        }

    }

public static void gameLoop()
    {
        cam = new Camera(70f,(float)(Display.getWidth()/Display.getHeight()),0.3f,1000f);
        x=0;
        while(!Display.isCloseRequested())
        {
            glClear(GL_COLOR_BUFFER_BIT);
            glLoadIdentity();
            cam.useView();

                updateKeys();
            glPushMatrix();
            {
HERE's THE PART FOR DRAWING
}
glEnd();
glPopMatrix();
            Display.update();

【问题讨论】:

  • 尝试设置显示配置 public static void setDisplayConfiguration(float gamma, float brightness, float contrast)
  • 设置显示配置不起作用:(它只是把整个显示器变成白色。
  • 它可以调整玩弄它

标签: java opengl graphics 3d lwjgl


【解决方案1】:

如果你有一个深度缓冲区来处理这类事情,那真的很有帮助。否则显示的内容只是您最后绘制的内容。

当然,如果您使用深度缓冲区,您的线条(我假设是线框覆盖)将不可见,因为默认深度测试是GL_LESS,它们将生成(大致)与它们的表面相同的深度被覆盖。 GL_LEQUAL 的深度测试将大大有助于解决该问题,但最终您通常需要一个小的深度偏移来防止当您尝试覆盖这样的线框时出现深度冲突。

供将来参考HERE's THE PART FOR DRAWING 在诊断问题方面并不是非常有用。

【讨论】:

  • 这解决了它。谢谢你。 “这里是绘图部分”我的意思是这只是顶点信息,但下次我会考虑你的建议:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 2013-01-24
  • 2013-06-21
  • 2011-07-08
相关资源
最近更新 更多