我正在使用opengl4.5和Visual Studio 2017编写游戏。由于偶然的巧合,我连续多次运行我的游戏(在发布模式下,先运行然后关闭,然后再次运行然后再次关闭,重复这种方式)。大约五六次之后,我得到了一个非常奇怪的形状(或模型)。
我使用相同的代码来渲染房屋,这些树木和许多其他员工。但是似乎只有房子表现得很奇怪。
渲染代码:
glBindVertexArray(model->m_VAO);
if (!model->m_backCulling) {
MasterRenderer::DisableBackCulling();
}
for (const auto& mesh: model->m_mesh) {
m_shader->setInts(m_uniformLocations.at("useDiffuseTexture"), mesh.UseDiffuseTexture);
m_shader->setInts(m_uniformLocations.at("useSpecularTexture"), mesh.UseSpecularTexture);
m_shader->setVec(m_uniformLocations.at("material.base_ambient"), mesh.BaseMaterial.Ambient);
m_shader->setVec(m_uniformLocations.at("material.base_diffuse"), mesh.BaseMaterial.Diffuse);
m_shader->setVec(m_uniformLocations.at("material.base_specular"), mesh.BaseMaterial.Specular);
m_shader->setFloats(m_uniformLocations.at("material.shininess"), mesh.BaseMaterial.Shininess);
// Bind appropriate textures
std::vector<Texture> textures = mesh.Textures;
for (unsigned int i = 0; i < textures.size(); i++)
{
if (textures[i].type == "texture_diffuse") {
glActiveTexture(GL_TEXTURE0);
}
else {
glActiveTexture(GL_TEXTURE1);
}
glBindTexture(GL_TEXTURE_2D, textures[i].id);
}
glDrawElementsBaseVertex(GL_TRIANGLES,
mesh.NumIndices,
GL_UNSIGNED_INT,
(void*)(sizeof(unsigned int) * mesh.BaseIndex),
mesh.BaseVertex);
}
glBindVertexArray(0);
MasterRenderer::DisableBackCulling();
在相应的析构函数中,我还可以删除*我的VAO和VBO。
有人遇到过与我相同的问题吗?