【问题标题】:OpenGL Skybox black triangles where edges meet边缘相遇的OpenGL Skybox黑色三角形
【发布时间】:2014-08-13 02:32:06
【问题描述】:

我的天空盒边缘出现黑色三角形。当我靠近它们时它们会消失,当我用相机远离它们时它们会变大。我的问题可能出在哪里?谢谢

    mat4 VP = camera[currentCamera]->GetViewProjectionMatrix();
    glm::mat4 S = glm::scale(glm::mat4(1),glm::vec3(150.0, 150.0, 150.0));
    glm::mat4 MVP = VP*S;   
    skybox->Render(glm::value_ptr(MVP));

而渲染函数是:

 void Renderable::Render(const GLfloat* MVP) 
{
    shader.Use();               
        glUniformMatrix4fv(shader("MVP"), 1, GL_FALSE, MVP);
        SetCustomUniforms();
        glBindVertexArray(vaoID);
            glDrawElements(primType, totalIndices, GL_UNSIGNED_INT, 0);
        glBindVertexArray(0);
    shader.UnUse();
}

【问题讨论】:

    标签: opengl skybox


    【解决方案1】:

    看起来您的天空盒几何图形被视锥体的远平面剪裁了。您可能应该增加与远平面的距离,这可能可以在您的相机类上进行配置。

    【讨论】:

    • 太棒了!非常感谢。我不得不增加 glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 500.0f); 中的最后一个参数;到 150 以上(天空盒的比例)。
    • @stevetronix: 0.1 对于近裁剪平面来说是一个非常(也是?)小的距离。剪裁平面越近,深度缓冲区分辨率越低。您应该始终选择尽可能远的近剪裁平面距离。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多