OpenGL versi apa yang harus saya kode untuk, mengingat kompatibilitas dan pertimbangan kinerja? [Tutup]

19

Ketika spesifikasi OpenGL diperbarui, mereka hanya akan menambah fitur. Jadi secara teori, perangkat keras terbaru dan terhebat dengan dukungan untuk profil Core dan Kompatibilitas harus menjalankan kode OpenGL1.1 super tua. Ini ternyata benar. Saya telah menghabiskan 12 bulan mempelajari OpenGL1.1 dan memiliki pemahaman yang adil tentang itu.

Saya membaca beberapa bab dari salah satu buku OpenGL4.2 baru yang mewah itu. Hampir semua fitur yang saya andalkan sudah usang (seperti Display Lists), yang memungkinkan saya berasumsi bahwa ada cara yang lebih baik untuk melakukan semua hal ini.

Mari kita pertimbangkan bahwa 1,1 kemungkinan akan didukung, secara penuh, oleh SEMUA perangkat keras modern. 1.1 dirilis pada tahun 1992. Saya tidak mengkodekan cara yang sulit hanya untuk mendukung PC berusia 20 tahun. :-p Saya pikir masuk akal untuk mengasumsikan sebagian besar gamer menjalankan perangkat keras yang berada di kisaran pertengahan sekitar 5 tahun.

Saya pikir metode yang lebih baru dirancang untuk secara universal menjadi salah satu dari dua hal: berkinerja lebih baik, atau lebih mudah untuk kode. Saya membaca bahwa tidak pernah keduanya! XD

Versi OpenGL apa yang paling banyak didukung oleh perangkat keras berusia 5 tahun? Versi apa yang paling masuk akal untuk digunakan, mengingat pertimbangan ini?

Busa
sumber

Jawaban:

19

Mengingat pertimbangan Anda, saya kemudian mampir untuk melihat kapan spesifikasi OpenGL untuk setiap versi dirilis dan juga memperhitungkan beberapa wawasan keseluruhan dari apa yang saya lihat.

OpenGL 3, yang memperkenalkan FBO, VAO, dan hal-hal lain, dirilis pada 11 Juli 2008, hampir 5 tahun yang lalu. Tentu saja, Anda tidak dapat mengharapkan semua kartu setelah tanggal tersebut untuk segera memiliki OpenGL 3 tersedia.

Melihat pada Survei Perangkat Keras Steam , 40% adalah DirectX 10. Karena OpenGL 3 memerlukan kartu grafis yang serupa, umumnya aman untuk menganggap sebagian besar kartu DirectX 10 dapat berjalan setidaknya dengan OpenGL 3.

OpenGL 3 didukung pada kartu semua jalan kembali ke seri GeForce 8xxx, yang cukup populer jika saya ingat dengan benar. Yang juga menarik untuk diperhatikan adalah bahwa Intel HD 2000 dan 3000 Graphics (Sandy bridge) hanya mendukung hingga OpenGL 3, jadi ingatlah itu jika Anda berencana untuk menargetkannya.

Kesimpulan: OpenGL 3 adalah taruhan yang bagus (juga ingat bahwa sebagian besar gamer, tergantung pada audiens target Anda, mungkin akan memiliki perangkat keras yang lebih baik daripada rata-rata).

DMan
sumber
Ini jawaban yang bagus. Persis seperti wawasan yang saya cari.
Sud
3
"Yang juga menarik untuk dicatat adalah bahwa Intel HD 2000 dan 3000 Graphics (Sandy bridge) hanya mendukung hingga OpenGL 3" Catatan: mereka hanya mendukung GL 3.1 (karena Intel tidak peduli). Dan karena itu Intel, "dukungan" harus diambil dengan sebutir garam. Perangkat keras mereka dapat mendukung 3.3, tetapi mereka tidak mengekspos itu (karena sekali lagi, mereka tidak peduli). Saya akan menghindari penggunaan OpenGL 3.x pada perangkat keras Intel sama sekali. Memang, saya akan menghindari melakukan apa pun berbasis shader pada perangkat keras Intel.
Nicol Bolas
Pertanyaan kemudian muncul; seberapa jenuh pasar dengan perangkat keras intel? Apakah layak tidak peduli dengan grafis intel dan menggunakan OpenGL3.x? Atau apakah ada cukup perangkat keras grafis intel yang benar-benar penting?
Suds
1
Satu masalah adalah OSX. Rilis terbaru 10.7.x hanya mendukung OpenGL 3.2 , 10.6.x hanya mendukung 3.0 (atau mungkin bahkan 2.x). 10.5.x sangat bervariasi tergantung pada kartu, 1.3, 1.5 dan 2.0 adalah kemungkinan. Sistem-sistem itu akan selamanya macet pada versi OpenGL kecuali jika pengguna membayar uang kepada Apple untuk pembaruan. Tidak ada pembaruan driver kartu video atau semacam itu untuk OSX yang akan memperbarui OpenGL. Masalah lainnya adalah beberapa chipset Intel tertanam yang digunakan dogey di netbook. Banyak dari mereka hanya OpenGL 2.0 atau lebih buruk.
David C. Bishop
Dan kemudian Anda memiliki 3DS, yang masih mengguncang OpenGL 1.1 ...
kirbyfan64sos
8

Saya akan mulai di sini: http://store.steampowered.com/hwsurvey

Saya tidak akan menargetkan periode waktu sebanyak persentase pengguna, misalnya, jika Anda menargetkan 4cpus, Anda hanya akan mencapai 45% pengguna, tetapi jika Anda bekerja ke 2, Anda akan mendekati 90%

salmonmoose
sumber
1
Di mana Anda melihat OpenGL? Saya hanya melihat DirectX (yang merupakan sesuatu yang menarik untuk dicatat jika Anda berencana hanya menargetkan Windows).
DMan
Saya kira Anda melakukan kerja keras berdasarkan kerusakan kartu grafis
Jimmy
Ya - saya tidak melihat apa-apa tentang OpenGL - tetapi Anda bisa mendapatkannya dari model kartu, atau memang, saya percaya akan ada cukup banyak korelasi antara versi DirectX dan OpenGL.
salmonmoose
3

Jawabannya tergantung pada apakah Anda perlu atau tidak ingin berjalan pada grafis Intel yang dirilis dalam jangka waktu yang Anda sebutkan.

Jika ya, batasi diri Anda dengan OpenGL 2.1 (atau bahkan 1,5), jika tidak, maka 3.x tampaknya masuk akal.

Ya, versi OpenGL yang lebih lama masih berjalan, dan ya, dari satu perspektif mereka tampak lebih sederhana. Di mana segala sesuatunya bengkok adalah ketika Anda mencoba melakukan sesuatu (dan Anda akan) bahwa mereka tidak mendukung terlalu mudah. OpenGL 1.1 bukan hanya cara yang sulit - seringkali cara yang mustahil jika Anda ingin mencapai hasil tertentu.

Maximus Minimus
sumber
Terpikir oleh saya bahwa saya harus menambahkan contoh mengapa 1.1 sering tidak mungkin. Salah satu yang dapat dengan mudah dikaitkan dengan fungsionalitas 1.1 adalah beberapa campuran pass. Karena Anda tidak memiliki FBO dan Anda sebagian besar terbatas pada 8 bit per tekstur komponen, Anda akan menemukan bahwa ketika campuran lewat menumpuk Anda akan mulai kehilangan presisi. Gunakan 3/4/5 lintasan dan hasil akhirnya akan mulai tampak seperti (atau lebih buruk dari) grafik 16-bit atau 8-bit. Namun beberapa lintasan seringkali diperlukan untuk mensimulasikan efek level yang lebih tinggi (multitexturing dasar akan menjadi salah satu yang kita semua kenal) dengan serangkaian fitur 1.1.
Maximus Minimus
Bahkan grafik Intel HD (Sandy / Ivy Bridge) hanya mendukung OpenGL 3.1, dan itu berumur satu tahun. Itu tergantung pada apakah Anda ingin mendukung laptop murah (atau berdaya rendah).
Steve Howard
2
@SteveHoward: Intel HD Graphics dapat mendukung sumber
Janus Troelsen
Artikel itu dari sekitar 3 bulan setelah saya memposting komentar saya.
Steve Howard
1

Pertama OpenGL 1.1 hal-hal seperti Daftar Tampilan akan tetap berfungsi dalam konteks baru asalkan Anda memiliki profil kompatibilitas (yang umumnya terjadi). Satu-satunya masalah adalah jika Anda berharap untuk port ke OpenGL ES, salah satu perpustakaan grafis spesifik konsol (mereka umumnya dilucuti OpenGL mirip dengan OpenGL ES) atau bahkan WebGL (yang akan memerlukan sedikit pengerjaan ulang pula).

Secara pribadi saya akan merekomendasikan menggunakan vertex / fragmen shader dan VBO. Mereka telah ada cukup lama sekarang dan menawarkan peningkatan kinerja yang luar biasa. Anda mungkin bahkan dapat memberikan mundur sederhana jika Anda membungkus fungsi dalam kelas.

Anda mungkin juga dapat meniru hal-hal seperti Objek Array Vertex.

David C. Bishop
sumber
0

Dengan perangkat keras berusia 5 tahun, beberapa orang masih menggunakan XP. Dan itu berarti Anda bahkan tidak dapat membuat kode dengan DirectX 10 atau OpenGL 3. Dan OpenGL 3 memiliki banyak fitur yang akan sangat Anda manfaatkan, seperti pembuat bingkai dan semacamnya. Jujur, saya akan sedikit meningkatkan persyaratan sistem Anda sehingga Anda dapat memasukkan fitur-fitur itu.

Avi
sumber
8
-1: "Dengan perangkat keras berusia 5 tahun, beberapa orang masih menggunakan XP. Dan itu berarti Anda bahkan tidak bisa membuat kode dengan DirectX 10 atau OpenGL 3." Tidak benar. OpenGL 3.x berjalan dengan baik di XP. Hanya D3D10 yang dibatasi dari XP, karena alasan API / driver. Tidak ada hubungannya dengan perangkat keras.
Nicol Bolas
0

Biasanya perangkat lunak 3d memiliki jalur kode untuk versi api grafik "dasar" dan versi api "terbaru dan terbaik".

Versi grafik dasar umum adalah D3D9 dan OpenGL 2.1 / GLSL 120 .. Keduanya sama-sama hilang geometri shader karena perangkat keras lama tidak mendukungnya.

Opsi dasar lainnya adalah ANGLE, yaitu GLES 2.0 plus EGL yang berjalan pada D3D9, desktop OpenGL, dan mobile GLES 2.0. Ini adalah ujung belakang untuk Google chrome dan webgl di chrome dan Firefox.

http://code.google.com/p/angleproject/

Sedangkan untuk versi "terbaru dan terhebat" yang Anda pilih, itu lebih menantang. Api dan perangkat keras yang lebih baru yang Anda targetkan, fitur-fitur yang tampak lebih baik yang dapat Anda dukung - tetapi hanya pada perangkat keras terbaru dan terhebat.

David Jeske
sumber