-
Dokusuz Metin Render Etme
- Geleneksel olarak metin render etmek için fonttaki tüm glifleri bir atlasa render edip bunu bir texture olarak bind etmek ve ardından ekranda üçgenler çizerek glifleri tek tek render etmek gerekir.
- Hata ayıklama mesajlarını hızlıca göstermek için basit bir yöntem tanıtılıyor.
- Tüm metni tek bir draw call ile çizebilen bir teknik açıklanıyor.
-
Font: Dokusuz Pikseller
- Font atlas texture'ını kaldırmak için, fragment shader içinde font atlasına benzer bir şeyin saklanması gerekir.
- Bitmap'ler tamsayı sabitleri kullanılarak saklanabilir ve bu sayede glifler render edilebilir.
- 8 bit tamsayılar bitmap olarak kullanılıp GLSL fragment shader'da ekrana çizilebilir.
-
Tek Draw Call
- Tekrarlayan draw komutlarından kaçınmak için instance draw call kullanılabilir.
- Her instance için konum ofseti ve gösterilecek metni içeren veriler kullanılır.
- Mesajlar 4 karakterlik parçalara bölünerek
uint32_t'ye dönüştürülür ve word_data yapısında saklanır.
-
Vertex Shader
- Vertex shader üç çıktı üretir.
gl_Position, üçgenin köşelerini ekranda konumlandırır.
- Gösterilecek kelime fragment shader'a aktarılır.
- Texture koordinatları üretilerek
uv koordinatları hesaplanır.
-
Fragment Shader
- Fragment shader'ın metni render etmek için üç bilgiye ihtiyacı vardır.
uv koordinatları glif bitmap'inin doğru bitine eşlenerek glif render edilir.
- Bit ayarlıysa ön plan rengiyle, ayarlı değilse arka plan rengiyle render edilir.
-
Tam Uygulama ve Kaynak Kodu
- Bu tekniğin uygulaması
le_print_debug_print_text modülünün kaynak kodunda bulunabilir.
- Bu modül, hata ayıklama mesajlarını ekranda kolayca göstermeyi sağlar.
1 yorum
Hacker News görüşü
snprintfkullanarak doğrudan GPU buffer'ına çıktı verdim