java - OpenGL 深度缓冲区未应用

标签 java opengl lwjgl depth

我对 openGL 渲染很陌生,无论我做什么,深度深度都不起作用。 我显然已经启用了深度测试( glEnable(GL_DEPTH_TEST); ),并且我清除了每帧的缓冲区。

但是 openGL 不断显示在其他对象前面渲染的最后一个对象...

你可以在我的 github 上看到我的代码。这些是相关的两个文件:Main loop 。我的主循环位于 src/tk/azertyfun/fps/Fps.java和渲染在 src/tk/azertyfun/fps/objects/Mesh.java .

我正在使用 java 和 lwjgl。

最佳答案

正如您所说,您在渲染循环开始之前正确启用深度测试:

glEnable(GL_DEPTH_TEST);

...并在每帧开始时正确清除缓冲区:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

通过 render() 方法在每个帧中绘制的第一件事是:

skybox.draw();

如果您查看 Skybox 中的 draw() 方法的实现,您会发现:

glDisable(GL_DEPTH_TEST);

因此,在您实际绘制任何内容之前,它会被禁用,并且永远不会再次启用。

关于java - OpenGL 深度缓冲区未应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22008173/

相关文章:

java - 在Blackberry4.6操作系统版本上加载html

java - 如何使用 oracle.jdbc.driver.OracleLog?

windows - Vista/7 的 OpenGL 最多 32 个屏幕窗口

c++ - 在 opengl 中渲染迷宫

java - GLFW 是否设计为在没有 LWJGL 的情况下使用(在 java 中)?

java - 图像与纹理大小 LWJGL

java - 根据特定键对 HashMap 项进行分组

java - 在jsp中显示具有html代码的字符串

objective-c - 如何将视频效果应用到 osx 中的 native 应用程序

java - 如何使用 `maven package` 将依赖项复制到输出目录