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