- rlsw adalah renderer perangkat lunak bergaya OpenGL 1.1 yang menyediakan backend alternatif untuk menjalankan raylib di lingkungan tanpa GPU
- Menyediakan dukungan fitur luas seperti point, line, triangle, quad dan lain-lain, termasuk clipping, tekstur, dan buffer warna/kedalaman ganda
- Tekstur mendukung semua format tak terkompresi yang didukung raylib, serta kontrol halus untuk pengaturan filtering dan wrapping
- Menyertakan fitur grafis 3D utama seperti matrix stack, depth test, blend, culling dan memaksimalkan kompatibilitas melalui OpenGL function binding
- Dengan ukuran di bawah 5000 baris, menonjol karena kesederhanaan dan integrasi dibanding renderer perangkat lunak lain dalam hal performa dan ringan
rlsw: Ikhtisar Renderer OpenGL Perangkat Lunak Raylib
Pengantar
- rlsw adalah pustaka yang mengimplementasikan seluruh fitur yang disediakan oleh
rlgl.h di raylib secara penuh dalam perangkat lunak
- Dirancang sebagai backend pengganti langsung agar raylib dapat dijalankan bahkan pada perangkat yang sama sekali tidak memiliki GPU
Fitur Utama
- Melakukan rendering pada framebuffer internal kustom, mendukung berbagai mode warna/kedalaman (RGB 8, 16, 24bit, Depth 8/16/24bit)
- Mode rendering yang didukung: point, line, triangle, quad
- Dapat mengatur detail rendering tambahan seperti ketebalan point, lebar line, dan mode polygon
- Semua mode rendering mendukung clipping
- Fitur tekstur: mendukung semua format tidak terkompresi yang didukung raylib
- Pemeriksaan minification/magnification
- Filtering point/bilinear
- Penerapan mode wrap per koordinat S/T secara terperinci
- Mendukung array vertex langsung, dan memungkinkan menggambar primitif langsung
- Dukungan matrix stack (Push/Pop)
- Fitur lain: getter bergaya OpenGL, resize framebuffer, koreksi perspektif, scissor clipping, depth test, blend, culling
Penggunaan dan Kustomisasi
- Berstruktur header & source tunggal, dan implementasi dapat dibuat melalui
#define RLSW_IMPLEMENTATION
- Mendukung kustomisasi bebas pengguna dengan beberapa konstanta mikro sebelum build
- Contoh: dapat mengatur jumlah/ukuran maksimum framebuffer atau tekstur
Struktur dan Tipe
- Mendefinisikan beberapa enum dan tipe yang kompatibel dengan OpenGL, serta struct internal khusus (
sw_vertex_t, sw_texture_t, dan lain-lain)
- Sebagian besar pemanggilan OpenGL dipetakan ulang menjadi fungsi rlsw untuk digunakan sebagai pengganti
- Struktur manajemen state internal yang kuat untuk berbagai matrix, state, dan manajemen tekstur
Lisensi dan Pemanfaatan
- Lisensi MIT memungkinkan penggunaan komersial dan non-komersial serta pembuatan karya turunan secara bebas
- Menekankan berat pada ringan, penggantian penuh berbasis software dibanding optimasi performa, sehingga kuat dalam integrasi dan distribusi yang sederhana
Ringkasan Detail
Struktur dan Penjelasan Header
- rlsw hampir menggantikan hampir semua fitur OpenGL 1.1 secara software per-fungsi
- Header ini (
rlsw.h) mendefinisikan:
- jenis nilai, enum dan struct kustom
- penggantian perintah OpenGL ke fungsi internal rlsw melalui macro
- deklarasi API (inisialisasi, salin/ambil framebuffer, draw, clear, input vertex/tekstur, dll)
Fitur Utama
- Secara internal, mendukung beberapa matrix berbasis stack (khusus Projection/ModelView/Texture)
- Manajemen state render: manipulasi bit state seperti Scissor, aktivasi tekstur, atau Depth Test
- Fitur kompatibilitas dengan OpenGL: berbagai getter, penyalinan state, penanganan error
- Penanganan tekstur: format tidak terkompresi, mode filter/wrap, salin memori, dll
- Secara default dapat memproses sebagian besar bentuk 2D/3D (point, line, triangle, quad) serta pengolahan warna dan kedalaman
Nilai yang Dapat Dikustomisasi
- Resolusi dan jumlah framebuffer/tekstur, lebar bit buffer warna/kedalaman, kedalaman stack matrix, jumlah tekstur maksimum, dan lain-lain
- Penyesuaian tingkat lanjut seperti nilai
SW_MAX_CLIPPED_POLYGON_VERTICES didukung
Elemen Utama Struktur Internal
- sw_context_t: mencakup semua state dan buffer pada seluruh konteks
- Secara internal mengelola secara terpadu vertex buffer, texture array, framebuffer, serta flag state
Kelebihan dan Kasus Penggunaan
- Dioptimalkan untuk perangkat tanpa GPU, lingkungan embedded, dan porting/test/otomatisasi pengembangan per-OS
- Aplikasi berbasis raylib dapat berjalan sepenuhnya secara perangkat lunak tanpa OpenGL
- Struktur ringan sangat menguntungkan untuk eksperimen/pengembangan baru dan dukungan lingkungan non-standar
Lisensi dan Kontributor
- Redistribusi fleksibel dengan lisensi MIT
- Ditinjau oleh Le Juez Victor, Ramon Santamaria (2025–2026)
Kesimpulan
- rlsw adalah Pure Software Renderer untuk raylib yang hampir sepenuhnya kompatibel dengan OpenGL
- Berkas tunggal, ringan, dapat diperluas, dan dukungan seluruh format tekstur raylib membuatnya lebih ramah integrasi dan memiliki hambatan masuk yang lebih rendah dibanding solusi grafis perangkat lunak lain
- Sangat bernilai untuk proyek dengan fokus pada grafis tingkat rendah dan portabilitas
1 komentar
Komentar Hacker News
gl.hsaya bisa mengirim field tambahan ke GPU sebagai fungsi ekstensi), saya memakai SFML sebagai framework grafis dan kemungkinan besar berbasis OpenGL 1.x, sebagai contoh modern, game Metropolis 1998 menunjukkan apa yang bisa dilakukan pendekatan seperti ini