【发布时间】:2010-10-13 09:19:14
【问题描述】:
这是一个带有 OpenGL 的 2D 游戏:
使用 OpenGL 是否可以显示绝对未经过滤、不拉伸或模糊的纹理?
所以当我有一个 BMP 并将其转换为 OpenGL 纹理,然后检索该纹理并将其转换回来时,我没有修改或质量/数据丢失?
【问题讨论】:
标签: opengl graphics 2d textures mipmaps
这是一个带有 OpenGL 的 2D 游戏:
使用 OpenGL 是否可以显示绝对未经过滤、不拉伸或模糊的纹理?
所以当我有一个 BMP 并将其转换为 OpenGL 纹理,然后检索该纹理并将其转换回来时,我没有修改或质量/数据丢失?
【问题讨论】:
标签: opengl graphics 2d textures mipmaps
当然,只需禁用过滤,这是通过将 GL_MIN_FILTER 和 GL_MAG_FILTER 设置为 GL_NEAREST 来实现的。还要确保以适当的大小绘制纹理,以便纹素与像素大小相同。
【讨论】:
正如 Matias 之前所说 - 一件事是将 GL_MIN_FILTER 和 GL_MAG_FITLER 设置为 GL_NEAREST(通过 glTexParameter*)。
但是对于像素完美的渲染,还有另一件重要的事情——你不希望你的纹理被重新缩放到二次方。最简单的方法是通过绑定目标GL_TEXTURE_RECTANGLE 而不是GL_TEXTURE_2D 指定纹理。在这样的绑定纹理上,纹理坐标通常不在 (0..1,0..1) 范围内,而是在 (0..w, 0..h) 范围内。通过这种方式,您可以轻松地对每个纹素进行索引。
【讨论】: