我有以下情况:我有一个带有纹理的材质,我从文件加载。在某些情况下,我只是加载图像,创建OpenGL纹理并生成mipmaps。然后只需渲染它。最小化时工作正常。在其他情况下。在初始mipmaps生成之后,我对该纹理进行了一些处理。因为我只在零级进行处理,所以在返回渲染器之前重新生成mipmap。问题是在第二代mipmap之后它们不存在纹理看起来好像有GL_NEAREST mag和min.I无法理解为什么它第二次不起作用。这是我生成mipmap的代码:
glBindTexture(GL_TEXTURE_2D,_id);
glTexParameteri ( _target, GL_TEXTURE_BASE_LEVEL, 0 );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glGenerateMipmap(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,0);
我的硬件是NVidia QUADRO K4000,OpenGL 4.2
还有一件事。在OpenGL调试输出中,我收到以下警告:
状态使用警告:纹理2是基础级别不一致。检查纹理大小.Severity:低 ,ID131204
我也用gDebugger进行了调试,它在第二代之后清楚地显示了mipmaps = 1的数量,而在第一代之后它是10.Btw,第二次它已经是不同的纹理对象,从初始纹理得到它的数据。