opengl - 3D模型看起来像透明的

标签 opengl

尝试使用 OpenGL 绘制波前 obj 文件,但似乎存在深度缓冲区问题。

Problem

来源:

// Default constructor
Engine::Engine()
{
    initialize();
    loadModel();    
    start();
}

// Initialize OpenGL
void Engine::initialize()
{     
    // Enable depth test
    glEnable(GL_DEPTH_TEST);
    // Enable depth write
    glDepthMask(GL_TRUE);
}

void Engine::start()
{
    // Main loop
    while(isOpen())
    {
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        // Draw 3D model to screen
        draw();
    }
}

最佳答案

要检查的事项:

  • 确保深度测试已启用 glEnable(GL_DEPTH_TEST)
  • 确保启用深度写入glDepthMask(true)
  • 确保您的上下文有深度缓冲区 Assert(glGetIntegerv(GL_DEPTH_BITS) != 0))

关于opengl - 3D模型看起来像透明的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13093005/

相关文章:

c++ - 当包含 GLAD 时,glClear() 会使 GLFW 崩溃

c++ - 如何随着时间的推移在OpenGL中平移和旋转三角形?

opengl - glShaderSource的参数是什么意思?

opengl - 直接在 GPU 上将 FBO 纹理编码为 H.264 视频

c++ - glVertexPointer 无效操作

OpenGL 着色语言不同类型的变量(限定符)

c++ - 如何在 64 位 Windows 中制作 OpenGL 应用程序?

c++ - 在 OpenGL 中,如何指定步长的索引?

c++ - 使用 GLEW、GLFW 和 g++ 编译在 OS X 10.10 下启用 OpenGL 4.1

c++ - QT/QML renderig - 质量差