C++ OpenGL深度缓冲区似乎不起作用

C++ OpenGL深度缓冲区似乎不起作用,c++,opengl,3d,sfml,C++,Opengl,3d,Sfml,我最近开始编写OpenGL 3D应用程序,并学习了一些教程,如open.gl 当我试图在3D中显示我的对象时,我目前面临一个渲染问题,深度缓冲区似乎根本不起作用。无论我是否启用它,清除缓冲位,显示总是一样的 即使在复制粘贴时,3D也不会有效 与我的测试代码和上面的源代码不同的是,我不能使用GLSL的#version 150核心,因此使用#version 130。定义GLM力弧度以避免编译错误。我解决了我的问题 问题来自SFML的上下文初始化,我需要配置适当的ContextSettings类并将其

我最近开始编写OpenGL 3D应用程序,并学习了一些教程,如open.gl

当我试图在3D中显示我的对象时,我目前面临一个渲染问题,深度缓冲区似乎根本不起作用。无论我是否启用它,清除缓冲位,显示总是一样的

即使在复制粘贴时,3D也不会有效


与我的测试代码和上面的源代码不同的是,我不能使用GLSL的#version 150核心,因此使用#version 130。定义GLM力弧度以避免编译错误。

我解决了我的问题

问题来自SFML的上下文初始化,我需要配置适当的ContextSettings类并将其传递到我的窗口:

  sf::ContextSettings           settings;
  settings.depthBits            = 24;
  settings.stencilBits          = 8;
  settings.antialiasingLevel    = 2;

  sf::Window window(sf::VideoMode(800, 600, 32), "OpenGL", sf::Style::Titlebar | sf::Style::Close, settings);

您是否确保安装了正确的驱动程序?Windows附带了一个默认的回退OpenGL实现,但是它缺乏对所有现代功能的支持。Windows驱动程序更新没有安装功能齐全的OpenGL驱动程序,因此您必须从GPU makers网站下载合适的驱动程序并手动安装。您是否将opengl32.lib和glu32.lib链接到您的项目,如果是,您是否有合适的驱动程序,此外,您还需要下载glm,并确保您包含了该库的包含项,因为glm是一个全标题库,您不必链接它,并且查看代码,您还需要下载glew并将其链接到您的项目,然后它就可以工作了。我目前正在与VMWare合作的Ubuntu iso下工作,我将尝试更新所有内容,看看这是否会改变结果。是因为司机的原因,我无法使用正确的GLSL版本吗?请随意将此标记为已接受的答案。另外,在将来,在你的问题中加入一个截图可能是一个好主意。我必须等两天,直到我可以,但我会的。