Java OpenGL中的奇怪剪裁问题

Java OpenGL中的奇怪剪裁问题,java,opengl,3d,swt,clipping,Java,Opengl,3d,Swt,Clipping,我对OpenGL非常陌生,所以请容忍我。:)我正在学习NeHe的OpenGL教程,并开发了第5课的我自己的版本,其中您可以围绕原点旋转3D形状。我不确定我做错了什么,我几乎一行一行地复制代码,但我在我的表面上看到奇怪的重叠 有人对什么会导致这样的问题有什么建议吗?看起来深度缓冲区有问题。特别是,看起来每个多边形的绘制与深度无关,即来自多边形的每个碎片都通过了深度测试。这意味着多边形只需以任意顺序彼此绘制即可 您是否使用类似的方法禁用了对深度缓冲区的写入 glDepthMask( GL_FALSE

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


有人对什么会导致这样的问题有什么建议吗?

看起来深度缓冲区有问题。特别是,看起来每个多边形的绘制与深度无关,即来自多边形的每个碎片都通过了深度测试。这意味着多边形只需以任意顺序彼此绘制即可

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

glDepthMask( GL_FALSE )
有可能吗

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

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
这将清除深度和颜色缓冲区。确保您没有去掉
GL\u DEPTH\u BUFFER\u位
部分


HTH

看起来深度缓冲区有问题。特别是,看起来每个多边形的绘制与深度无关,即来自多边形的每个碎片都通过了深度测试。这意味着多边形只需以任意顺序彼此绘制即可

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

glDepthMask( GL_FALSE )
有可能吗

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

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
这将清除深度和颜色缓冲区。确保您没有去掉
GL\u DEPTH\u BUFFER\u位
部分


HTH

在我看来,您似乎缺少启用深度缓冲区或使用z缓冲区创建帧缓冲区。(这与游吟诗人所写的内容相似)


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


哇,用一句话就完全搞定了:

gl.glEnable(GL.GL_CULL_FACE);

我不知道它是做什么的,但在我使用的任何教程中都没有提到它,但我的演示现在运行得非常好。去谷歌看看这是怎么回事D

哇,用一行字完全修复了它:

gl.glEnable(GL.GL_CULL_FACE);

我不知道它是做什么的,但在我使用的任何教程中都没有提到它,但我的演示现在运行得非常好。去谷歌看看这是怎么回事D

以下是我的GL的相关“属性”:GL=context.getGL();gl.glColor3f(0.0f,0.0f,0.0f);gl.glHint(gl.gl\u透视图\u校正\u提示,gl.gl\u最佳);gl.glClear(gl.gl_颜色_缓冲_位| gl.gl_深度_缓冲_位);gl.glShadeModel(gl.gl_平滑);//启用平滑着色gl.glClearColor(0.0f、0.0f、0.0f、0.0f);//黑色背景gl.glEnable(gl.gl_深度_测试);//启用深度测试尝试添加
gl.glDepthMask(true)添加查看这是否有影响。添加gl.glDepthMask(true)似乎没有改变任何事情:(以下是我的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|位| GL.GL_DEPTH_BUFFER位);GL.GL.glShadeModel(GL.GL.GL_平滑);//启用平滑着色GL.GL.clearcolor(0.0f,0.0f,0.0f,0;//黑色背景gl.glEnable(gl.gl_DEPTH_TEST);//启用深度测试尝试添加
gl.glDepthMask(true);
add,看看这是否有区别。添加gl.glDepthMask(true)似乎没有改变任何东西:(