如何在OpenGL中禁用mipmaps

7

我正在使用OpenGL制作2D精灵引擎,想要禁用mipmaps,因为我不需要它们。

当我调用以下代码时:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, internal->internal_w, internal->internal_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, internal->data);
RenderWithThisTexture();

我得到了白色的矩形,但是当我调用以下代码时:
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, internal->internal_w, internal->internal_h, GL_RGBA, GL_UNSIGNED_BYTE, internal->data);
RenderWithThisTexture();

我获取了正确纹理的矩形。

我发现这可能是因为启用了mipmaps,但很遗憾我找不到任何关于如何禁用它们的信息。

我想坚持使用OpenGL 1.1(而非OGL 2.0或以上代码)。


1
希望你指的是OpenGL 1.1而不是1.0,因为前者不支持纹理对象,这使得纹理映射非常低效和繁琐。我假设你也不是在谈论ES,否则这个问题需要重新标记/重命名。 - Christian Rau
1个回答

18
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

这应该是默认设置。确保您没有在任何地方将其更改为 MIPMAP


21
实际上这不是默认值。很奇怪的是默认值是GL_NEAREST_MIPMAP_LINEAR,这确实启用了贴图级别处理。顺便说一下,你应该指出根据操作者的需求,还可以将其设置为GL_NEAREST,只是不能使用带有MIPMAP的选项。 - Christian Rau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接