Render perangkat lunak OpenGL murni

8

Untuk melatih algoritma pembelajaran mesin, kita perlu membuat beberapa geometri dalam OpenGL tanpa dukungan render perangkat keras (tidak ada kartu grafis). Jadi kami berpikir untuk merender dalam perangkat lunak murni, dan kami telah melihat Mesa. Sepertinya ia mampu merender dalam perangkat lunak murni, tetapi sejauh ini, kami hanya mendapatkan OpenGL 2.x, sedangkan kami membutuhkan OpenGL 3.3.

Adakah yang tahu kalau itu mungkin? dan jika demikian, bagaimana? Kami tampaknya mengalami hambatan sepanjang waktu.

(Latar belakang, mengapa kami ingin melakukan itu: untuk melatih algoritma pembelajaran, kami perlu melakukan banyak menjalankan perangkat lunak kami pada PC cluster, yang tidak memungkinkan rendering dalam perangkat keras.)

Petunjuk, ide, dan petunjuk apa pun akan dihargai.

Gabriel
sumber
Mesa bahkan tidak mendukung OpenGL 3.3 yang dipercepat perangkat keras pada beberapa sistem (seperti laptop saya).
Kolonel Thirty Two
terkait gamedev.stackexchange.com/questions/17571/…
Ciro Santilli 冠状 病毒 审查 六四 六四 事件

Jawaban:

6

Saya bingung dengan kebutuhan Anda. Apakah Anda menjalankan kode pada PC atau sistem tertanam? Jika Anda menjalankan apa pun yang tampak seperti PC, "semua dukungan render perangkat keras" pada dasarnya tidak benar. Minimal Anda memiliki beberapa barang terintegrasi Intel. Saya belum melihat sistem tanpa kepala yang secara fisik tidak memiliki chip video.

Pada sistem tanpa kepala Anda dapat membuat tanpa jendela, bagaimana melakukan ini dengan GLX Anda dapat melihat detailnya di OpenGL Tanpa Jendela . Bagaimanapun perangkat keras yang paling jelek pun akan lebih efisien daripada penyaji perangkat lunak.

Jika Anda benar-benar dalam keadaan darurat dan sama sekali tidak memiliki perangkat keras grafis, Anda dapat menggunakan sesuatu seperti VirtualGL .

Tetapi jika Anda mensintesis gambar dalam perangkat lunak menggunakan OpenGL adalah semacam mundur. OpenGL dirancang di sekitar batasan keras perangkat keras grafis. Hasilnya adalah bahwa ada batasan build yang signifikan yang sengaja dapat diabaikan ketika rendering dalam perangkat lunak. Selain itu algoritma raster tidak terlalu efisien saat menggunakan perangkat keras saat ini. Pelacakan sinar orde pertama bisa lebih efisien dan mudah melumpuhkan banyak inti. Mungkin Anda bisa melihat sesuatu seperti PovRay .

rioki
sumber
1
Sudah ada beberapa chip video intel jelek yang diproduksi hingga saat ini, yang hanya mendukung OpenGL 1.4 + ARB assembly fragmen + ARB software-assembly vertex yang diimplementasikan. Ini tidak akan lebih efisien daripada perender perangkat lunak untuk aplikasi apa pun yang membutuhkan OpenGL 3.
Ruslan
Terima kasih banyak. Ya, ini seperti PC. Pertama, PC sederhana di kluster PC, yang kita masuki melalui ssh. Nantinya, itu akan menjadi node PC dalam sistem HPC. Masalahnya adalah: apa pun yang kita lakukan, kita selalu mendapatkan OpenGL 2.1. Aplikasi kita didasarkan pada Qt, tetapi dalam versi tanpa jendela, semua kode Qt tidak aktif, kecuali yang menciptakan konteks OpenGL. Dan, ya, kami memang mengatur DISPLAY ke: 0,0 pada mesin jarak jauh.
Gabriel
Tapi sekali lagi OpenGL 2.1 tidak terlalu buruk. Saya menggunakannya secara luas dengan hasil yang cukup baik.
rioki
3

Tampaknya hanya OpenGL 2.x yang didukung sepenuhnya oleh perender perangkat lunak di Mesa.

Namun, jawaban ini menunjukkan, bahwa sebagian besar fungsi OpenGL 3.x didukung melalui ekstensi. Jadi, Anda mungkin ingin mencobanya.

kolrabi
sumber