我想使用OpenGL渲染RGBA图标(用于UI)。首先,我使用gimp将图标缩放到2的幂。然后,我使用lodepng加载图标,然后使用OpenGL渲染它(图标纹理使用GL_LINEAR和GL_LINEAR_MIPMAP_LINEAR)。图标被渲染,但看起来很模糊。
我猜这是因为像素拟合不好。但是,我不知道我能做些什么。
编辑:使用高(16x)MSAA可以解决问题,但性能损失过高。
Edit2:我使用此着色器对图标纹理进行采样
#version 140
noperspective in vec2 pos;
uniform sampler2D tex;
out vec4 colorOut;
void main(void){
vec4 v=texture(tex, (pos/2)+vec2(0.5));
colorOut=vec4(v);
}
答案 0 :(得分:0)
Andon M. Coleman解决方案正常工作(而且非常简单),但我希望在运行时将图标缩放到合适的大小。
我的解决方案是为每个像素制作几个(8x8)纹素提取,这对于实时应用来说太慢了,但由于图标大小没有改变,因此可以将其缓存在另一个纹理上。然后,我只需要为每个像素获取一个样本。
结果并不像Andon M. Coleman解决方案那么尖锐,但它看起来很不错。