Jadi, saya baru di OpenGL ... Saya memiliki pengetahuan umum tentang pemrograman game tetapi hanya memiliki sedikit pengalaman praktis.
Saya telah melihat berbagai artikel dan buku dan mencoba masuk ke OpenGL, tetapi saya telah menemukan berbagai versi dan cara lama vs baru dalam melakukan sesuatu yang membingungkan.
Saya kira pertanyaan pertama saya adalah apakah ada yang tahu beberapa angka tentang persentase gamer yang dapat menjalankan setiap versi OpenGL. Seperti apa pangsa pasarnya? 2.x, 3.x, 4.x ...
Saya melihat persyaratan untuk Half Life 2 karena saya tahu Valve memperbaruinya dengan OpenGL untuk berjalan di Mac dan saya tahu mereka biasanya mencoba untuk mencapai basis pengguna yang sangat luas, dan mereka mengatakan minimum GeForce 8 Series. Saya melihat 8800 GT di situs web Nvidia dan terdaftar dukungan untuk OpenGL 2.1. Yang, mungkin saya salah, kedengarannya kuno bagi saya karena sudah ada 4.x. Saya mencari driver untuk 8800GT dan katanya mendukung 4.2! Sedikit perbedaan, lol.
Saya juga membaca hal-hal seperti XP hanya mendukung hingga versi tertentu, atau OS X hanya mendukung 3.2, atau semua hal lainnya. Secara keseluruhan, saya hanya bingung berapa banyak dukungan yang ada untuk berbagai versi dan versi apa yang harus dipelajari / digunakan.
Saya juga mencari sumber belajar. Hasil pencarian saya sejauh ini telah mengarahkan saya ke OpenGL SuperBible. Edisi ke-4 memiliki ulasan hebat di Amazon, tetapi mengajarkan 2.1. Edisi ke-5 mengajarkan 3.3 dan ada beberapa hal dalam ulasan yang menyebutkan bahwa edisi ke-4 lebih baik dan bahwa edisi ke-5 tidak mengajarkan fitur-fitur baru dengan benar? Pada dasarnya, bahkan dalam materi pembelajaran saya melihat perbedaan dan saya bahkan tidak tahu harus mulai dari mana.
Dari apa yang saya mengerti, 3.x memulai cara baru dalam melakukan sesuatu dan saya telah membaca dari berbagai artikel dan ulasan yang ingin Anda "jauhi fitur-fitur usang seperti glBegin (), glEnd ()" namun banyak buku dan tutorial yang saya lihat menggunakan metode itu. Saya pernah melihat orang mengatakan bahwa, pada dasarnya, cara baru dalam melakukan sesuatu lebih rumit namun cara lama> buruk.>
Hanya catatan tambahan, secara pribadi, saya tahu saya masih harus banyak belajar sebelumnya, tetapi saya tertarik pada penghentian; jadi saya kira faktor-faktor itu juga, karena, sejauh yang saya mengerti itu hanya dalam 4.x?
[hanya btw, desktop saya mendukung 4.2]
sumber
Jawaban:
Jika Anda bertanya-tanya tentang cakupan OpenGL, tempat yang baik untuk memulai adalah Steam Hardware Survey.
http://store.steampowered.com/hwsurvey?platform=pc
Sayangnya, tampaknya rusak sekarang dan tidak menampilkan statistik untuk kartu video. : \
DirectX 9 dapat dibandingkan dengan OpenGL 2.1, DirectX 10 ke OpenGL 3.0 dan DirectX 11 ke OpenGL 4.0. Di sinilah asal mula kebingungan.
XP mendukung semua versi OpenGL, tetapi tidak mendukung DirectX 10 atau lebih tinggi. Ini adalah bagaimana Microsoft ingin memaksa orang untuk meningkatkan ke Vista, tetapi tidak berhasil dengan baik. OpenGL adalah standar terbuka, sehingga selama produsen kartu video bersedia untuk menghasilkan driver untuk XP, itu akan mendukung versi OpenGL yang lebih baru.
Ini adalah masalah yang sangat besar untuk OpenGL. Pada dasarnya, di masa lalu, Anda akan mengirim barang ke kartu video dengan menggunakan "mode langsung". Mulailah dengan
glBegin
, lakukan beberapa hal, akhiri denganglEnd
. Namun, driver kartu video tidak menyukai ini sama sekali . Bagaimana mereka bisa tahu berapa banyak barang yang akan Anda kirim? Apakah akan menjadi 4 simpul untuk quad bertekstur atau 100.000 untuk model kulit? Inilah sebabnya mereka memperkenalkan objek vertex buffer (VBO). Sementara mode langsung adalah daftar tertaut, VBO adalah array statis. Pengembang tahu seberapa besar itu, pengemudi tahu seberapa besar itu. Semua orang senang. Jadi papan standar OpenGL (Khronos Group) memutuskan untuk menghentikan mode langsung untuk OpenGL 3.0 dan yang lebih tinggi. Namun, ini bermasalah, karena saya akan tunjukkan dengan contoh sederhana.Katakanlah Anda ingin menampilkan quad bertekstur, mulai dari awal.
Di OpenGL 2.1:
GL_PROJECTION
.GL_MODELVIEW
.GL_TEXTURE_2D
pegangan.glBegin
...glVertex2f
...glTexCoord2f
...glEnd
.Di OpenGL 3.0:
GL_TEXTURE_2D
pegangan.glDrawArrays
.Jadi apa yang salah di versi pertama?
Dan di versi kedua, Anda dapat memiliki masalah dengan hal di atas dan :
Tanpa alat debug yang tepat, ini menjadi masalah serius. Inilah sebabnya mengapa orang mengatakan Anda harus tetap menggunakan mode langsung. Untungnya, kita sekarang memiliki gDEBugger yang gratis dan bagus sekarang, tetapi itu bukan peluru ajaib.
Untuk menjawab pertanyaan Anda: itu tergantung pada permainan Anda. Jika Anda ingin menjangkau khalayak luas (misalnya game kasual atau platformer 2D), Anda harus menargetkan 2.1. Jika Anda membuat game luar angkasa epik yang tidak akan berjalan pada perangkat keras berusia enam tahun, target 3.3. Dan jika Anda membutuhkan yang terbaru dan terbaik untuk kompatibilitas di masa depan, target 4.0.
sumber
Untuk beberapa statistik tentang kompatibilitas perangkat keras, Anda dapat melihat survei Steam: http://store.steampowered.com/hwsurvey/ Meskipun mencantumkan DX10 dan DX11, kompatibilitas perangkat kerasnya sama dengan OpenGL 3 dan OpenGL 4. Meskipun perhatikan bahwa keadaan instalasi driver OpenGL pada orang biasanya lebih buruk daripada DX.
Windows XP tidak mendukung DX10 atau DX11, tetapi OpenGL 3 dan 4 harus baik-baik saja, asalkan drivernya ok. OSX mendukung OpenGL 3 (maksimal), di Linux Anda mendapatkan OpenGL 4 dengan driver vendor ATI / NVIDIA (tentu saja hanya jika perangkat keras mendukungnya).
Lalu ada juga versi ES seluler OpenGL. Sebenarnya saya sarankan melihat ke OpenGL ES 2.0, karena lebih kecil, jadi lebih mudah dipelajari, tetapi Anda juga perlu menggunakan praktik modern, yaitu shader dan VBO. Ini juga apa yang digunakan pada sebagian besar perangkat seluler (sehingga Anda dapat membuat game seluler) dan juga WebGL pada dasarnya sama, sehingga Anda benar-benar dapat melakukan semua pembelajaran di peramban web dengan keunggulan pengembangannya yang cepat. OpenGL ES 3.0 akan dirilis musim panas ini.
Tessellation adalah fitur OpenGL 4.0. Pertama-tama Anda harus mempelajari jenis-jenis shader lainnya, apalagi semua dasar-dasarnya, tetapi saya setuju itu menarik - sebenarnya saya telah menulis tes kecil dengannya: http://blog.tapiov.net/post/15189341463/playing- dengan-opengl-4-tessellation
sumber