使用“ glGenerateMipmap”在OpenGL中的Mip映射纹理的奇形锯齿状外观

时间:2018-10-08 15:20:33

标签: opengl mipmaps

我第一次在OpenGL中尝试mip-maps。我遵循了this tutorial,它基于this code。在fragment shader中,我做了以下修改:

Iterator Function()

...翻转y轴值(本教程练习的一部分,以使纹理正确)。 这还将在最后一行设置LOD偏差,以便我可以在纹理中查看较粗的细节。

我还修改了本教程的cpp file

第29行,关闭了超级采样抗锯齿功能:

Iterator

第87行,创建mip地图:

vec2 uv = UV;
uv.y = 1-UV.y;
color = texture( myTextureSampler, uv, 1 ).rgb;

从183行开始,实现了简单的摄像机移动(以很好地了解其外观):

// glfwWindowHint(GLFW_SAMPLES, 4);

我希望看到input texture的模糊版本,但看起来很糟糕:enter image description here

“ 1”底部的锯齿状边缘对我完全没有意义。它们出现在纹理中的某些图形上,而不显示在其他图形上。

输入纹理格式为.DDS,这可能是问题的根源吗?这可能是我的驱动程序中的错误吗?我在Ubuntu Linux 16.04上,具有PPA:s中最新的驱动程序。在线搜索,未找到与此主题相关的任何内容。

编辑:我还尝试了一些openGL设置,如下所示:

GLuint Texture = loadDDS("uvtemplate.DDS"); 
glBindTexture(GL_TEXTURE_2D, Texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glGenerateMipmap(GL_TEXTURE_2D);

但是它什么也没做。

1 个答案:

答案 0 :(得分:0)

问题的根源是旧驱动程序。我正在使用的计算机具有特殊的设置,其中非标准的PPA取代了受ubuntu(规范)支持的PPA。我无法访问某些特殊网络(在客户处)之外的那些。没在sudo apt-get update上读取错误消息。

从我的问题中得到的教训:如果不更新图形驱动程序,可能会引起各种错误,以及如何咬伤您,即使您认为自己已更新它们,也无法预测。和三联检查。感谢@derhass和@ Rabbid76留下有用的评论。