在OpenGL上的图标渲染

时间:2015-02-10 23:13:20

标签: opengl graphics icons textures

我想使用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);
}

1 个答案:

答案 0 :(得分:0)

Andon M. Coleman解决方案正常工作(而且非常简单),但我希望在运行时将图标缩放到合适的大小。

我的解决方案是为每个像素制作几个(8x8)纹素提取,这对于实时应用来说太慢了,但由于图标大小没有改变,因此可以将其缓存在另一个纹理上。然后,我只需要为每个像素获取一个样本。

结果并不像Andon M. Coleman解决方案那么尖锐,但它看起来很不错。