将摄像头从对象移开时OpenGL纹理变差

b09cbbtk  于 2022-11-04  发布在  其他
关注(0)|答案(2)|浏览(163)

当我把相机移离物体时,纹理通常会变差。我需要非常接近物体才能让纹理变好。有人知道是什么原因导致的吗?如何修复它?
这是我加载纹理的方式

stbi_set_flip_vertically_on_load(1);
m_Local_buffer = stbi_load(path.c_str(), &m_width, &m_height, &m_bpp, 4);

glGenTextures(1, &m_rendererID);
glBindTexture(GL_TEXTURE_2D, m_rendererID);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, m_width, m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, m_Local_buffer);
glGenerateMipmap(GL_TEXTURE_2D);

glBindTexture(GL_TEXTURE_2D, 0);

image of the bad texture
编辑:更新了代码。

epggiuax

epggiuax1#

对于mipmapping,您必须使用其中一个mipmap缩小过滤器。例如:GL_LINEAR_MIPMAP_LINEAR(请参阅glTexParameter):
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
41zrol4v

41zrol4v2#

问题是模型中的脸彼此靠得太近,导致了Z战斗和闪烁。这不是由纹理或我的或OpenGL代码引起的,就像我最初假设的那样。当我改变没有这个问题的模型时,它正常工作,没有任何闪烁。

相关问题