0
我想使用OpenGL呈現RGBA圖標(用於UI)。首先,我使用gimp將圖標縮放爲2的冪。然後,我使用lodepng加載圖標,然後使用OpenGL渲染它(圖標紋理使用GL_LINEAR和GL_LINEAR_MIPMAP_LINEAR)。該圖標呈現,但似乎模糊。OpenGL上的圖標呈現
我想這是由於壞像素擬合。但是,我不知道我能做什麼。
編輯:使用高(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);
}
極高的MSAA可能不是解決此問題的方法 - MSAA不會增加紋理採樣的次數,也不會增加每像素運行碎片着色器的次數,但它可能會改變採樣位置。你可能會嘗試一些非常簡單的事情,比如像一個恆定的半像素偏移。 – 2015-02-11 00:37:39
我知道MSAA不是解決方案。但是,使用常量偏移不起作用。 – dv1729 2015-02-11 00:55:11
您在那裏顯示的內容('+ vec2(0.5)')不是半像素偏移量,而是半紋理偏移量。爲了抵消半個像素(技術上而言),您需要知道紋理的尺寸。 '+ vec2(0.5)/ textureSize(tex,0).xy'應該這樣做。 – 2015-02-11 03:13:16