Haruskah saya terus belajar OpenGL atau hanya beralih ke DirectX untuk memberi saya kesempatan lebih baik untuk mendapatkan pekerjaan di industri game? [Tutup]

29

Saya telah belajar pemrograman grafik untuk beberapa waktu sekarang menggunakan OpenGL dan Linux. Saya cukup akrab dengan sebagian besar konsep, tetapi saya benar-benar ingin memajukan pengetahuan saya dan akhirnya mengejar karir dalam pengembangan game, terutama pengembangan mesin game.

Sejauh ini menurut saya mayoritas studio game membuat game untuk Windows menggunakan DirectX.

Sunting: Saya tahu bahwa pertanyaan OpenGL vs DirectX telah ditanyakan di sini sebelumnya, tetapi saya belum menemukan jawaban dalam perspektif yang saya inginkan.

Sunting 2: Setelah membaca semua tanggapan / komentar saya telah memutuskan untuk terus menyelam lebih dalam ke grafis dengan OpenGL / GLSL, tapi saya akan mencoba untuk bermain-main dengan DX juga, hanya untuk memiliki pemahaman dasar tentang API. Saya ingin mengucapkan terima kasih kepada semua orang atas jawaban dan wawasan yang telah Anda berikan kepada saya.

adivasile
sumber
Versi umum dari pertanyaan ini mungkin menghasilkan beberapa jawaban yang bagus di programmers.stackexchange.com ...
Macke
1
Saya pada dasarnya telah diajarkan poin lebih baik dari DX shader oleh seorang pria OpenGL yang belum pernah melakukan HLSL. Selama Anda tahu bahwa "fragmen shader" berarti "pixel shader", konsepnya hampir sama; P
drxzcl
IIRC, DirectX dibuat sedikit lebih mirip OpenGL di versi 8 atau 9. Sebelum itu, DirectX kadang-kadang dikritik sebagai tidak perlu sulit digunakan. API masih berbeda, tetapi pendekatan umumnya harus sangat mirip. Penafian - Saya juga bukan ahli.
Steve314
@ Macke - Nasihat karir di luar topik @ Programer. Ini mungkin terlalu spesifik tetapi pertanyaan karier umum akan ada pada topik @ Masalah Profesional (Saat ini diusulkan di area 51) Silakan pergi dan berkomitmen untuk mendukung SE
Chad ini
Peluang yang luar biasa bahkan jika Anda masuk ke industri ini Anda tidak akan menjadi seorang programmer grafis dan itu tidak akan menjadi masalah jika Anda tahu satu API, yang lain, keduanya, atau tidak sama sekali. Di luar itu, tergantung pada perusahaan dan proyeknya. D3D adalah cara yang lebih umum digunakan di ruang PC, GL | ES benar-benar dominan di ruang seluler, dan konsol semua menggunakan API eksklusif yang tidak dapat Anda pelajari sendiri.
Sean Middleditch

Jawaban:

28

Itu tidak masalah. Konsep inti adalah sama di keduanya, terutama sekarang bahwa pixel shaders adalah norma. Dan karena sebagian besar game adalah multi platform, mereka mungkin akan menggunakan sejumlah fitur yang serupa di kedua bahasa. Selama Anda bisa menulis shader dalam glsl atau hlsl, Anda akan baik-baik saja.

Yang sedang berkata, jumlah posisi "pengembangan mesin game" di luar sana kecil. Sebagian besar perusahaan menggunakan sesuatu dari rak. Untuk posisi yang ada, bahkan lebih sedikit lagi yang merupakan level entry. Kebanyakan programmer game entry level tidak menulis kode yang berhubungan dengan grafik (selain dari mungkin shader) karena semuanya sudah diabstraksi.

Tetrad
sumber
1
Apa yang dilakukan oleh kebanyakan programmer level pemula? Di studio besar, menengah atau kecil?
Quazi Irfan
Itu pertanyaan terpisah. gamedev.stackexchange.com/questions/5538/…
Tetrad
1
Hanya untuk menambahkan jawaban yang lebih umum, menurut pengalaman saya, programmer junior cenderung memulai dengan gameplay, ui, hud, dan bekerja dari sana, gameplay adalah titik masuk yang populer.
JuniorDeveloper1208
Menu integrasi aset dan UI bahkan merupakan titik masuk yang lebih umum dari pengalaman saya.
Coyote
Kawan, jangan memulai utas panjang tentang pertanyaan khusus itu di komentar di sini. Itu adalah jawaban yang sangat baik untuk pertanyaan yang saya tautkan.
Tetrad
10

Itu semua tergantung pada pekerjaan yang Anda inginkan / akan dapatkan. Anda mungkin berpikir tentang pekerjaan di pasar PC di mana DX adalah raja. Ingatlah bahwa sebagian besar perusahaan AAA bertujuan untuk pasar konsol tempat API cukup spesifik.

PS3 misalnya memiliki ekstensi kepemilikan untuk implementasi OpenGL ES.

OpenGL berkembang di ruang seluler. Sekarang tersedia di semua platform modern tetapi Windows Phone 7.

Saat ini Hanya OpenGL ES tersedia di ruang ini. Tetapi chip PowerVR yang lebih kuat datang dengan dukungan untuk OpenGL 4 dan DX11.

Keahlian OpenGL Anda adalah emas. Anda dapat kembali ke DX untuk mendapatkan pekerjaan yang mengharuskannya. Tetapi sementara itu ingatlah bahwa OpenGL adalah raja pada jumlah perangkat dan platform di mana tersedia.


Sunting : Selain itu semakin banyak perusahaan cenderung menggunakan mesin yang ada dan seringkali bahkan pengembang game inti semakin banyak disaring dari API tingkat rendah. Selalu lebih baik untuk memiliki pengetahuan yang baik tentang API asli ketika Anda menghadapi bug dan perilaku aneh pada platform tertentu. Tapi itu semua bermuara pada konsep, dan seperti yang lain menunjukkan DX dan OpenGL pada intinya akan membutuhkan pengetahuan tentang konsep yang sama.


Sunting : Karena Anda sudah terbiasa dengan OpenGL dan mungkin shader Anda harus mencoba OpenCL ... API ini berpotensi menjadi hal besar berikutnya dalam komputasi paralel.

Saya menyebutkannya sebagai kernel OpenCL menggunakan datatype yang interoperable dengan OpenGL dan mudah dimengerti untuk pengembang OpenGL. Lihat itu dan lihat apakah Anda dapat memperoleh beberapa pengalaman dengan solusi komputasi umum yang hebat (saat ini sedang diintegrasikan ke dalam fisika peluru ).

Anjing hutan
sumber
OpenGL menjadi standar industri yang menginspirasi lib dan API lain. Anda seharusnya tidak mengabaikan pentingnya hal itu. Tetapi di sisi lain Anda tidak boleh berhenti pada satu hal dan jika saya jadi Anda, saya akan melihat API dan mesin tingkat tinggi yang abstrak OpenGL dan DirectX.
Coyote
Saya kenal dengan OpenCL. Saya telah bekerja pada proyek sampingan, membangun mesin fisika (belum sempurna, sebagian besar untuk tujuan pembelajaran) dan saya telah menggunakan sedikit OpenCL untuk membuatnya lebih cepat tetapi belum mendapatkan hasil yang luar biasa (dalam beberapa kasus saya bahkan membuatnya lebih buruk)
adivasile
Itu pertanda percobaan yang bagus;) Lihatlah implementasi di mesin peluru. Bagaimanapun, semoga sukses dengan proyek Anda.
Coyote
7

Saya setuju, itu tidak masalah API mana yang Anda pelajari. Sangat penting untuk mengetahui konsep dasar.

Saat melihat pengembangan game, Windows bukan satu-satunya platform target. Seperti yang saya dengar, Apple tumbuh sebagai platform target, tetapi konsolnya juga sangat penting. Konsol biasanya memiliki API grafis khusus mereka sendiri (saya pikir mereka melakukan itu hanya untuk mengganggu kami). Sementara API konsol cenderung memiliki lebih banyak kesamaan dengan OpenGL daripada dengan DirectX, itu masih tidak ada perbedaan besar.

Pergilah dengan apa pun yang bekerja untuk Anda.

mrbinary
sumber
1
XBox mungkin melakukan cara DirectX ...?
Macke
Ya, PS3 menggunakan PSGL. Tapi, X360 menggunakan DirectX karena mereka ada di PC, meskipun tidak yakin tentang itu, hanya tebakan saja.
Quazi Irfan
Saya belum berpengalaman di Xbox, tetapi menurut Wikipedia API-nya didasarkan pada DirectX. Di PS3, PSGL hanya satu dari API yang tersedia.
mrbinary
X360 menggunakan API yang dekat dengan DX9, dengan beberapa kebiasaan untuk mengakomodasi fakta bahwa ia memiliki jumlah memori yang relatif cepat yang relatif kecil.
drxzcl
6

Bagaimana dengan perspektif Profesor Pengembangan Game?

Jika Anda memiliki dasar-dasar OpenGL turun maka dengan SEMUA berarti menjelajah ke dunia DirectX (perhatikan akan DX) bahwa Dx9 masih digunakan dalam pengembangan untuk alasan kompatibilitas, karena platform yang lebih tua (khususnya XP) tidak mendukung grafis yang lebih baru pipa di Dx10 dan Dx11. (yang seharusnya dibaca sebagai rekomendasi untuk memulai di Dx9 dan kemudian mencatat perbedaan dalam Dx10 dan kemudian 11 saat Anda maju) Itu juga akan membuat Anda lebih bulat.

Idealnya Anda ingin menghabiskan waktu berkualitas dalam HLSL dan CG (Perhatikan bahwa kedua bahasa shader yang berbeda ini sebenarnya adalah bahasa yang sama (satu bermerek oleh Microsoft dan yang lainnya oleh Nvidia) memahami bagaimana kerja shader vertex dan fragmen (pixel) akan bekerja menjadi aset besar bagi Anda dan perusahaan game mana pun yang bekerja untuk Anda (dengan anggapan Anda sedang mengerjakan sistem render atau subsistem dan bukan kode AI. ;-)

Ogre3D adalah mesin render sumber terbuka yang mendukung kedua subsistem grafis (OpenGL / DirectX) dan digunakan di banyak gim ... karena sumber tersedia secara bebas, Anda dapat menikmati menggali melalui itu dan melihat dengan perbandingan bagaimana panggilan ke OpenGL berbeda dari panggilan ke DirectX.

Saya juga akan merekomendasikan itu karena Anda telah menghabiskan beberapa waktu di OpenGL yang Anda cari di WebGL yang sepertinya akan meledak dalam waktu dekat.

Semoga Itu Membantu!

Robert French
sumber
Saya tidak akan mengatakan WebGL akan meledak di masa depan, setidaknya tidak dalam waktu dekat. Ini hanyalah cara lain untuk membuat 3d di browser tanpa plugin apa pun.
Quazi Irfan
Dengan vendor besar menambahkan dukungan HTML5 dan JS ke produk mereka (Visual Studio) dan perusahaan seperti Adobe meluncurkan Edge (HTML5 JS Flash killer?) Saya pikir akan melihat lebih banyak konten berbasis web yang mengambil keuntungan dari akselerasi perangkat keras.
Robert French
4

Saya membaca baru-baru ini bahwa John Carmack merekomendasikan DirectX untuk fakta sederhana bahwa Microsoft, untuk sementara, bermain catch-up ke openGL dan dengan demikian mereka menciptakan produk yang kompetitif dan mendorong amplop sementara orang-orang openGL menghabiskan waktu berdebat dan melakukan desain dengan komite yang memungkinkan DirectX untuk dipoles dan, saya kira, lebih mudah untuk dikerjakan tetapi tetap menggunakan OpenGL.

http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom,12372.html

Mungkin pilihan lain untuk dipertimbangkan jika Anda menyukai grafik secara umum dan untuk apa ini mengkhawatirkan adalah apa yang terjadi di ruang yang tertanam.

Saya bekerja di ruang tertanam menggunakan Linux dan WinCE. Saya adalah mantan arsitek Ford SYNC (ada di sana selama 6 tahun) dan sekarang saya mengerjakan GM CUE (jawaban GM untuk Ford SYNC). Ford SYNC tidak menggunakan openGL atau DirectX. Sebaliknya, Ford memilih skrip Flash & Action; apa yang dilakukan Flash di bawah tenda saya tidak yakin tetapi lambat sekali; JD Powers memberinya peringkat yang buruk. GM CUE adalah semua Linux dan openGL ES dan meskipun GM CUE memiliki prosesor iMX yang lebih baru, kinerja animasi dalam openGL di Linux sangat mengejutkan. CUE / openGL jauh lebih cepat. Sekali lagi, Ford melumpuhkan sistem mereka dengan Adobe Flash.

Jadi, jika Anda ingin membuatnya dalam permainan tetapi khawatir tentang sifat kompetitif tetapi masih menyukai jenis pekerjaan ini, mungkin lihat opsi yang memperluas resume Anda. Sudah pengalaman saya bahwa, setidaknya di dunia embedded, WinCE tampaknya tidak menggunakan DirectX sebanyak itu. (WinCE memiliki API yang sedikit berbeda dari NT mungkin menjadi bagian dari alasan itu). OpenGL ada di mana-mana di dunia tertanam dan orang-orang melakukan lebih banyak hal seperti tablet, infotainment mobil sedang panas saat ini, dan tentu saja ponsel pintar ...

Eric
sumber
+1 untuk menyebutkan ruang yang disematkan. Saya tidak pernah berpikir untuk masuk ke grafik untuk sistem embedded (kecuali untuk platform seluler), tetapi setelah melakukan sedikit riset saya menemukan itu menjadi pilihan yang layak dipertimbangkan. Saya memang memiliki minat untuk platform tertanam beberapa tahun yang lalu, tetapi hal-hal lain menghalangi, jadi saya akhirnya meninggalkannya cukup awal.
adivasile
2

Saya akan mengatakan itu mungkin baik di resume Anda untuk bisa mengatakan Anda telah bekerja dengan keduanya, terlepas dari mana Anda mengkhususkan diri.

Saya mengatakan demikian karena, seperti apa pun, ini lebih tentang teknik umum daripada pengetahuan API / sintaksis di luar titik tertentu. Anda harus dapat melakukan hal-hal, dan mengetahui jalan keluar Anda, tetapi Anda tidak harus menerapkan hal-hal besar di kedua API: s. (Itu O (n * m), yang tidak skala ...). Mengetahui API sedikit, dan mengetahui teknik yang berbeda (yaitu O (n + m)) berfungsi, dan akan sangat membantu.

Tentu saja, Anda akan skor bonus untuk melakukan sesuatu yang "maju" di DX juga, karena itu menunjukkan Anda memiliki pengetahuan API yang lebih dalam, tetapi Anda perlu beberapa teknik canggih dalam hal apa pun, untuk membuktikan bahwa Anda tahu bagaimana kotak-kotak harus dihubungkan (mengabaikan kata-kata ajaib khusus yang harus Anda ucapkan untuk menyelesaikannya).

Sama dengan API apa pun (3d atau lainnya), atau bahasa pemrograman apa pun, sungguh.

Macke
sumber
1

Saya menemukan bahwa DirectX lebih sulit untuk dipelajari dan karena itu keterampilan yang lebih baik. Directx biasanya memiliki dukungan yang lebih baik dari produsen papan, namun, microsoft tidak merilis banyak pembaruan untuk mengambil keuntungan dari kemajuan tersebut (dan hanya subpopulasi tertentu dari gamer hardcore yang benar-benar menggunakan papan itu). Mengenai pengembangan game, semua platform game utama menggunakan mesin grafis milik mereka sendiri ... xbox -> DirectX Box :) Mengetahui konsep 3D, jerat, pencahayaan, transformasi, dll., Adalah keterampilan yang sama untuk mereka semua.

MartyTPS
sumber
Saya telah menemukan sedikit perbedaan konseptual antara DX9-ish dan "modern" openGl (tanpa menggunakan glBegin). Saya akan menghargai pemikiran Anda mengapa salah satu dari keduanya "lebih mudah" atau "lebih keras" daripada yang lain.
drxzcl
1
Saya benar-benar menemukan bahwa OpenGL lebih mudah untuk mengambil dasar-dasar yang sangat mendasar, tetapi begitu Anda beralih ke VBO dan shader, D3D menjadi jauh lebih mudah (kurangnya ekstensi membuatnya lebih konsisten di seluruh basis perangkat keras yang lebih luas juga).
Maximus Minimus
Itu pengalaman saya juga, maka pertanyaannya.
drxzcl
1

Jika Anda tahu satu, Anda dapat dengan mudah mengambil yang lain.

Jika Anda tahu OpenGL, Anda dapat dengan mudah memprogram untuk ponsel pintar (android dan iPhone) plus win / Linux / mac.

DirectX hanya Win / Xbox. Jadi kecuali Anda ingin menargetkan Xbox, saya akan mengatakan tetap dengan OpenGL karena dapat menargetkan lebih banyak platform.

pengguna697111
sumber
-4

Saya lebih suka OPENGL. Pertimbangkan misalnya, Android yang menggunakan sistem operasi seluler OPENGL. Ada begitu banyak mesin game yang dikembangkan berdasarkan pada platform OPENGL.

pengguna907629
sumber