我想用OpenGL使用FreeType繪製文字,並使其更清晰,我從FreeType爲每個mipmap迭代生成字體紋理。除了一件事以外,一切都很好。當我這樣做:如何讓OpenGL選擇最近的較大的mipmap?
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
的OpenGL根據文本的大小選擇最接近的紋理貼圖,但如果有尺寸爲16和32,我想22,它選擇16,使它看起來可怕。有沒有辦法設置它,以便它總是選擇最近的較大的mipmap?
我知道我能做到這一點的同時渲染設置手動的紋理貼圖級別的文本:
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, (int) log2(1/scale));
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_LOD, (int) log2(1/scale));
但是,這是有效的?那種不需要完全使用mipmap?我可以製作不同的紋理,並根據尺寸選擇一種紋理。那麼有沒有更好的方法來實現這一點?
「我想用OpenGL使用FreeType繪製文本,並使其更清晰,我從FreeType爲每個mipmap迭代生成字體紋理。」這不是一個好主意。 FreeType渲染較小文本的方式是* not *,這對於mipmap插值非常有效。這就是爲什麼你的GL_LINEAR_MIPMAP_LINEAR文本看起來很糟糕; FreeType的小文字提示使較小的文字看起來不對。最好是僅僅使用一組文本分辨率,然後使用它們。 – 2012-02-29 17:39:14