深度缓冲:不关心片段是否透明,只关心深度,在后面的自然被前面的遮挡;
由于这三个窗户的绘制顺序为:
std::vector<glm::vec3> vegetation;
vegetation.push_back(glm::vec3(-1.5f, 0.0f, -0.48f));
vegetation.push_back(glm::vec3(1.5f, 0.0f, 0.51f));
vegetation.push_back(glm::vec3(0.0f, 0.0f, 0.7f));//最前面的
vegetation.push_back(glm::vec3(-0.3f, 0.0f, -2.3f));//最后一层玻璃
vegetation.push_back(glm::vec3(0.5f, 0.0f, -0.6f));//中间层玻璃
将绘制顺序改变一下:
std::vector<glm::vec3> vegetation;
vegetation.push_back(glm::vec3(-1.5f, 0.0f, -0.48f));
vegetation.push_back(glm::vec3(1.5f, 0.0f, 0.51f));
vegetation.push_back(glm::vec3(-0.3f, 0.0f, -2.3f));//最后一层玻璃
vegetation.push_back(glm::vec3(0.5f, 0.0f, -0.6f));//中间层玻璃
vegetation.push_back(glm::vec3(0.0f, 0.0f, 0.7f));//最前面的
不管其他两块玻璃,就看这3块玻璃 观察z值,优先绘制后面的片段,就会避免这类问题。