2013-01-01 14 views
5

ben bir görüntü ile başlayacağız: - Arial, kalın, büyüklüğü 11Çirkin yazı, OpenGL

enter image description here

Üstü görüntü iki farklı şekilde elde metni sunan, hem yazı aynı tür kullanılır

En alttaki resim düzenleme programında ve OpenGL uygulamamın en üstünde bir tane oluşturuldu.

font_ptr font(new FTExtrudeFont(filename.c_str())); 

Benim sorum, neden böyle çizilir edilir: FTGL kütüphanesinden FTExtrudeFont kullanarak, daha kesin olmak gerekirse? Bunun nedenini farklı yeniden boyutlandırma algoritmaları olabilir, ancak eğer öyleyse, OpenGL uygulamasında bu daha iyi görünen yazı tipini (en alttaki) nasıl elde edebilirim?

DÜZENLEME:

font->Render(text,   // Text to be displayed 
      -1,   // Line length, which by default is left as -1 
      pos);   // Position in which to draw text 
+0

Ekstrüzyonlu bir yazı tipine mi ihtiyacınız var? Normal bir vektör yazı tipini veya dokulu bir yazı tipini deneyebilir ve daha iyi sonuçlar elde edip edemeyeceğinizi görebilirsiniz. – WildCrustacean

+0

@bde Dokulu yazı tipini denedim, ancak keskin, gerçek siyah taslaklara ihtiyacım olduğu için bu durumda benim için iyi olmayan antialiased. –

cevap

3

Bu OpenGL'de doku örneklemesi kaynaklanabilir bir şey gibi görünür:

bir yazı tipi kılmak için, ben bu bir işlevi çağırmak sadece yoktur. Çizdiğiniz doku (bu durumda bir yazı tipi), çizdiğiniz dörtlü ile aynı boyutta değilse gerçekleşir.

Kolay çözüm: doku boyutunun ekranda çizilen alanla eşleştiğinden emin olun. 12px alana 14px yazı tipi oluşturma, ancak 12px yazı tipi veya 14px alanı kullanın.

Sorunuzda yazı tipinizin 'size 11' olduğunu belirtiyorsunuz. FTGL kütüphanesinin ayrıntılarının farkında değilim, ancak çizebileceğim belirli bir dizge için size en iyi boyutları anlatacak bir çağrı olduğunu varsayalım. Bunları hesaplamak için kendi matematik kullanmayın, kütüphaneyi kullanın. Boyutları doğru olarak aldığınız sürece, yaşadığınız sorun gerçekleşmemelidir.

+0

Cevabınız için teşekkürler, ancak bunu yapamamış olduğum tek işleme işlevi (FTGL kitaplığından): font-> Render (text, -1, pos); Bu nedenle, oluşturma alanını değiştirmenin bir yolu olduğunu düşünmüyorum. –

+0

Dediğim gibi, FTGL kütüphanesi hakkında pek bir şey bilmiyorum, fakat belki yanlış model/projeksiyon matrisleri kullanmanız, bu da köşe noktalarından piksel konumlarına geçişin yanlış olmasına neden oluyor olabilir mi? * Bir şey, doku (lar) ın örneklenmesine neden oluyor. –

+0

"Yanlış model görünümü matrisi" kullanıp kullanmadığımı nasıl kontrol edebileceğimi bilmiyorum. Gördüğüm kadarıyla her şey doğru görünüyor - gui bileşenlerinin arka planlarını çizmek için başka dokular kullanıyorum ve düzgün bir şekilde görüntüleniyorlar (yani pikseller doğru yerlerde). –