- rlsw, OpenGL 1.1 stili bir yazılım renderlayıcısıdır; GPU’nun olmadığı ortamlarda raylib’in çalıştırılmasını sağlayan bir alternatif backend sunar
- Nokta, çizgi, üçgen, dörtgen gibi çeşitli render modları ve kırpma, doku, çoklu renk/derinlik tamponu gibi geniş özellikleri destekler
- Doku, raylib’in desteklediği tüm sıkıştırılmamış formatlarda kullanılabilir; filtreleme ve sarmalama ayarları da ayrıntılı biçimde kontrol edilir
- Matris yığını, derinlik testi, blend, cull face gibi temel 3D grafik özellikleri dahildir; OpenGL fonksiyon bağlama ile uyumluluk en üst düzeye çıkarılır
- Kod boyutu 5.000 satırdan az LOC olduğundan, performans ve hafiflik açısından diğer yazılım renderlayıcılara kıyasla sadelik ve bütünleşebilirlikte güçlü avantaj sağlar
rlsw: Raylib Yazılım OpenGL Renderlayıcısına Genel Bakış
Tanıtım
- rlsw, OpenGL 1.1 stili bir yazılım renderlayıcısıdır ve raylib’in rlgl.h içinde sunduğu işlevlerin tamamını yazılımla uygular
- GPU’nun hiç bulunmadığı cihazlarda bile raylib’in çalıştırılmasını mümkün kılmak için doğrudan bir alternatif backend olarak tasarlanmıştır
Öne Çıkan Özellikler
- Render işlemi, özel dahili frame buffer üzerinde yapılır; RGB 8, 16, 24bit ve Depth 8/16/24bit dahil çeşitli renk/derinlik modları desteklenir
- Desteklenen render modları: nokta, çizgi, üçgen, dörtgen
- Nokta kalınlığı, çizgi genişliği, poligon modu gibi ek render ayarları yapılabilir
- Tüm render modları kırpma (clipping) desteği sağlar
- Doku özellikleri: raylib’in desteklediği tüm sıkıştırılmamış formatlar desteklenir
- Minification/magnification kontrolü
- Point/bilinear filtreleme
- S/T koordinatına göre Wrap modu ayrıntılı uygulanır
- Vertex array doğrudan desteklenir, ham çizim doğrudan yapılabilir
- Matris yığını (Push/Pop) desteği
- Diğer özellikler: OpenGL tarzı getter’lar, frame buffer yeniden boyutlandırma, perspektif düzeltme, scissor clipping, derinlik testi, blend, cull face
Kullanım ve Özelleştirme
- Tek başlık ve tek kaynak yapısıyla gelir;
#define RLSW_IMPLEMENTATION ile implementasyon bölümü üretilebilir
- Derleme öncesi birden çok ince ayar sabitiyle kullanıcı tanımlı özelleştirme desteklenir
- Örn: frame buffer veya doku maksimum sayısı/boyutu gibi değerler ayarlanabilir
Yapı ve Tipler
- Birçok OpenGL uyumlu enum ve tip ile dahili yapılar (sw_vertex_t, sw_texture_t vb.) tanımlanır
- Çoğu OpenGL çağrısı, alternatif kullanım için rlsw işlevleriyle yeniden haritalanır
- Birden fazla matris, durum ve doku yönetimi gibi iç durum yönetim yapıları sağlamdır
Lisans ve Kullanım
- MIT lisansı ile ticari ve ticari olmayan kullanım ile ikincil ürün oluşturma serbesttir
- Performanstan çok hafiflik ve tam yazılım alternatifi doğasına odaklandığından, hızlı entegrasyon ve dağıtıma güçlüdür
Ayrıntılı Özet
Header yapısı ve açıklama
- rlsw, OpenGL 1.1 işlevlerini fonksiyon düzeyinde neredeyse tamamen yazılımla değiştirir
- Bu header (rlsw.h) şunları tanımlar
- değer tipleri, özel enum ve struct
- makrolarla OpenGL komutlarını rlsw dahili fonksiyonlarına dönüştürür
- API bildirimleri (başlatma, frame buffer kopyalama/edinme, draw, clear, vertex/texture girdisi vb.)
Önde Gelen Özellikler
- Dahili olarak birden çok yığın tabanlı matris desteği sağlanır (Projection/ModelView/Texture için ayrı)
- Render durum yönetimi: Scissor, doku etkinleştirme veya Depth Test gibi durum bitlerini yönetme
- OpenGL uyumluluk özellikleri: çeşitli getter’lar, durum kopyalama, hata yönetimi
- Doku işleme: sıkıştırılmamış formatlar, filtreleme/sarmalama modları, bellek kopyalama vb.
- Temel olarak, çoğu 2D/3D şekil (nokta, çizgi, üçgen, dörtgen) ile renk ve derinlik işleme mümkündür
Özelleştirilebilen ayarlar
- frame buffer/doku çözünürlüğü ve sayısı, renk/derinlik buffer bit derinliği, matris yığını derinliği, maksimum doku sayısı vb.
SW_MAX_CLIPPED_POLYGON_VERTICES gibi gelişmiş kullanıcı ayarları uygulanabilir
Dahili yapıların ana öğeleri
- sw_context_t: tüm bağlamın tüm durum ve tamponlarını kapsar
- İçeride vertex buffer, texture array, framebuffer, durum bayrakları gibi bileşenler tek bir çatı altında yönetilir
Avantajlar ve kullanım alanları
- GPU’siz cihazlar, gömülü sistemler, işletim sistemi bazlı portlama/test/geliştirme otomasyonu gibi senaryolara optimize edilmiştir
- OpenGL olmadan da raylib tabanlı uygulamalar tamamen yazılımla çalıştırılabilir
- Hafif mimarisi sayesinde yeni deneme/geliştirme ve standart dışı ortam desteği için çok uygundur
Lisans ve katkıda bulunanlar
- MIT ile esnek yeniden dağıtım izni
- 2025–2026: Le Juez Victor, Ramon Santamaria incelemesi
Sonuç
- rlsw, OpenGL ile neredeyse tamamen uyumlu bir raylib için Pure Software Renderer’dır
- Tek dosya, hafiflik, genişletilebilirlik ve raylib’in tüm doku formatları desteği açısından, diğer yazılım grafik çözümlerine göre hem entegrasyon eşiği hem de bütünleşebilirlikte üstündür
- Düşük seviyeli grafikler ve taşınabilirlik odaklı projelerde özellikle değeri yüksektir
1 yorum
Hacker News görüşü