Kecuali OpenGL, saya tidak pernah menggunakan perpustakaan itu, tapi saya akan mencoba menebak, dengan membaca halaman wikipedia, seperti yang Anda lakukan.
Anda tampaknya benar tentang Mesa. Ini adalah info tambahan yang kami miliki:
"Sistem X Window adalah sistem perangkat lunak komputer dan protokol jaringan yang menyediakan GUI dasar untuk komputer jaringan. Ini menciptakan lapisan abstraksi perangkat keras."
"GLX memungkinkan program yang ingin menggunakan OpenGL untuk melakukannya dalam jendela yang disediakan oleh X Window System.
GLX terdiri dari tiga bagian:
- Sebuah API yang menyediakan OpenGL fungsi.
- Sebuah perpanjangan dari protokol X, yang memungkinkan klien untuk mengirim 3D perintah rendering - Perpanjangan server X yang menerima perintah rendering dari klien dan meneruskannya ke pustaka OpenGL yang terinstal
Jika klien dan server menjalankan pada komputer yang sama dan kartu grafis 3D yang dipercepat tersedia, dua komponen sebelumnya dapat dilewati oleh DRI. Program klien kemudian diizinkan untuk secara langsung mengakses perangkat keras grafis. "
"Infrastruktur Direct Rendering (DRI) adalah antarmuka yang digunakan dalam Sistem X Window untuk memungkinkan aplikasi pengguna untuk mengakses perangkat keras video tanpa memerlukan data untuk dilewatkan melalui server X."
"Open Inventor adalah API grafik C ++ 3D yang dirancang untuk menyediakan lapisan pemrograman yang lebih tinggi untuk OpenGL"
Untuk mempermudah, mari bayangkan aliran data (dan perintah) yang disederhanakan yang terjadi pada entri dan keluar dari masing-masing API tersebut. Pada awalnya kami memiliki program aplikasi Anda (kode terkompilasi), yang Anda jalankan dari komputer Anda. Pada akhirnya kami memiliki gambar yang ditampilkan di layar Anda.
Ada beberapa kasus yang saya akan menahan jawaban atas pertanyaan-pertanyaan ini:
-Apakah komputer Anda memiliki kartu grafis (GPU), atau hanya CPU, untuk memproses fungsi grafis?
-Apakah aplikasi Anda tertanam di jendela sistem x-window?
-Jika Anda menggunakan sistem x window, apakah "x server" berjalan di komputer Anda atau di komputer lain di jaringan?
Saya akan menganggap Anda memiliki driver untuk GPU Anda jika Anda memilikinya, dan Anda memiliki Mesa untuk rendering perangkat lunak).
Skenario pertama: Anda menjalankan aplikasi grafis yang ditulis dengan OpenInventor, tanpa menggunakan Sistem X Window, dan Anda tidak memiliki kartu grafis. Alur program akan sangat mirip dengan:
Your application
↓ (uses functions of)
OpenInventor
↓ (calls functions declared by)
OpenGL
↓ (redirects function calls to implementation defined by)
Mesa
↓ (implemented OpenGL functions to be run on the CPU)
[Probably] Operating System rendering API
↓
3D Images on your screen
Apa yang terjadi di sini disebut "render perangkat lunak": perintah grafis tidak ditangani oleh perangkat keras grafis apa pun, melainkan oleh CPU Anda yang biasa, prosesor yang biasanya menjalankan perangkat lunak.
Skenario kedua: sekarang bayangkan bahwa dengan kondisi yang sama seperti di atas, Anda memiliki kartu grafis. Alirannya akan terlihat seperti ini:
Your application
↓ (uses functions of)
OpenInventor
↓ (calls functions declared by)
OpenGL
↓ (redirects function calls to implementation defined by)
Proprietary Drivers
↓ (converts OpenGL commands to GPU commands)
Graphic Card
↓
3D Images on your screen
Apa yang terjadi sekarang disebut "akselerasi perangkat keras", biasanya lebih cepat dari skenario pertama.
Skenario ketiga: sekarang mari kita perkenalkan aliran Sistem X Window, atau setidaknya menurut saya, berdasarkan beberapa baris Wikipedia yang saya baca.
Mari kita lupakan tentang perangkat keras grafis dan API untuk sementara waktu. Alurnya harus seperti:
Your application (X Window System sees it as an "X Client")
↓ (sends requests defined by the X Window System Core Protocol)
X Server
↓ (convert your request to graphic commands)
[Probably] Operating System rendering API
↓
Windows or 2D images on your screen
Perhatikan bahwa ketika menggunakan Sistem X Window, layar Anda dan komputer tempat Anda menjalankan aplikasi Anda mungkin tidak terhubung "langsung", tetapi dapat dihubungkan melalui jaringan.
Skenario keempat: misalkan Anda ingin menambahkan rendering grafis 3D mewah ke aplikasi X Client Anda dari contoh sebelumnya. Sepertinya saya bahwa Sistem X Window pada awalnya tidak dapat melakukan ini, atau setidaknya akan memerlukan banyak kode yang berbelit-belit untuk melakukan yang setara dengan fungsi OpenGL API.
Untungnya Anda dapat menggunakan GLX untuk menambahkan dukungan untuk perintah OpenGL ke sistem. Anda sekarang memiliki:
Your application
↓ (sends graphic requests defined by the "GLX extension to the X Protocol")
X Server with the GLX extension
↓ (convert your request to OpenGL commands)
OpenGL
↓ (redirects function calls to implementation defined by)
...
Sekarang Anda dapat menyambungkan kembali panah terakhir ke yang setelah "OpenGL" dalam skenario pertama: Anda bisa mendapatkan gambar 3D di layar Anda!
Akhirnya tentang apa yang saya pikir mengerti tentang DRI:
Tampaknya memungkinkan Mesa memiliki akses ke GPU, sehingga akan mengubah alur skenario pertama kami ke:
...
↓
Mesa
↓ (forwards OpenGL commands)
DRI
↓ (converts OpenGL commands to GPU commands)
Graphic Card
↓
3D Images on your screen
Dan tampaknya juga arus pendek arus ketika menggunakan GLX, mengingat kondisi bahwa server dan kliennya berada di komputer yang sama, dan bahwa Anda memiliki GPU. Dalam hal itu grafik skenario keempat kita akan menjadi:
Your application
↓ (sends graphic requests defined by the "GLX extension to the X Protocol")
DRI
↓ ("catches" OpenGL commands and converts them to GPU commands)
Graphic Card
↓
3D Images on your screen
Itu dia !
Sekarang ingatlah bahwa saya bukan ahli dalam lingkungan Unix, jadi saran terbaik saya adalah mempelajari dokumentasi masing-masing API untuk mengetahui dengan tepat apa yang dapat mereka lakukan.
Menggabungkan grafik sebelumnya ke dalam satu grafik dapat membuat hal-hal lebih mudah untuk dipahami. Saya membiarkan ini sebagai latihan untuk Anda!