【问题标题】:Strange Clipping Issue in OpenGLOpenGL中的奇怪裁剪问题
【发布时间】:2010-12-01 16:32:34
【问题描述】:

我对 OpenGL 非常陌生,所以请多多包涵。 :) 我正在学习 NeHe 的 OpenGL 教程,并且我开发了我自己的第 5 课版本,您可以在其中围绕原点旋转 3D 形状。我不确定我做错了什么,我几乎是逐行复制了代码,但我在我的表面上看到了奇怪的重叠。

是否有人对导致此类问题的原因有任何建议?

【问题讨论】:

    标签: java opengl 3d swt clipping


    【解决方案1】:

    在我看来,您似乎缺少启用深度缓冲区或者可能使用 z 缓冲区创建帧缓冲区。 (这和游吟诗人写的差不多)

    glEnable(GL_DEPTH_TEST);
    

    【讨论】:

      【解决方案2】:

      您的深度缓冲区似乎有问题。特别是看起来每个多边形都是在不考虑深度的情况下绘制的,即来自多边形的每个片段都通过了深度测试。这意味着多边形只是按照它们碰巧呈现的顺序相互绘制。

      您是否使用类似的方法禁用写入深度缓冲区

      glDepthMask( GL_FALSE )
      

      有机会吗?

      如果不是这样,那么您是否记得在每帧开始时清除深度缓冲区? Nehe 教程以

      开头
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      

      清除深度和颜色缓冲区。确保您没有删除其中的 GL_DEPTH_BUFFER_BIT 部分。

      HTH

      【讨论】:

      • 这里是我的 GL 的相关“属性”: gl = context.getGL(); gl.glColor3f(0.0f, 0.0f, 0.0f); gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); gl.glShadeModel(GL.GL_SMOOTH); // 启用平滑着色 gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // 黑色背景 gl.glEnable(GL.GL_DEPTH_TEST); // 启用深度测试
      • 尝试添加gl.glDepthMask(true); add 看看是否会有所不同。
      • 添加 gl.glDepthMask(true) 似乎并没有改变任何东西。 :(
      【解决方案3】:

      哇,用一行就彻底解决了:

      gl.glEnable(GL.GL_CULL_FACE);
      

      我不知道它的作用,但在我使用的任何教程中都没有提到它,但我的演示现在完美运行。去谷歌看看那做了什么。 :D

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-27
        • 1970-01-01
        • 2012-05-27
        • 2016-05-19
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        相关资源
        最近更新 更多