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