Saya telah belajar sendiri perpustakaan OpenGL untuk sementara waktu sekarang, dan ingin mulai membuat game. Namun, untuk perkenalan yang lebih mudah, saya ingin memulai dengan sesuatu yang 2D, seperti permainan gaya Pokemon top-down.
Apakah ini rencana yang bagus, atau apakah OpenGL dibuat khusus untuk 3D?
Jawaban:
OpenGL cukup tepat untuk game 2D. Meskipun umumnya digunakan untuk 3D, fungsi yang sama dapat digunakan untuk game 2D. Artinya, apa pun yang dapat Anda lakukan dengan 3D OpenGL akan berlaku dengan OpenGL "2D".
Beberapa informasi lebih lanjut dapat ditemukan di lokasi ini .
OpenGL 2D dicapai dengan cara yang sama dengan OpenGL 3D. 2D OpenGL hanya merupakan penerapan teknik, yaitu rendering adegan pada bidang datar, kemudian menggunakan dan proyeksi ortografis, bukan proyeksi perspektif, yang, tergantung pada pengaturan Anda, dapat mengubah pemandangan.
Sebuah contoh:
(a) adalah adegan dalam proyeksi ortografis. (B) adalah adegan yang sama, menggunakan proyeksi perspektif. Dalam gim 2D, ini dapat menyebabkan kesalahan penempatan sprite jika kedalamannya diubah (yang, tergantung pada bagaimana Anda melakukan pengembangan, mungkin demikian). Menggunakan proyeksi perspektif juga membuat menyelaraskan hal-hal dalam koordinat layar lebih sulit.
Selain itu, OpenGL membawa banyak, banyak, banyak manfaat dengannya. Terutama, akselerasi perangkat keras merupakan nilai tambah yang besar. Ada juga tingkat kontrol yang jauh lebih baik atas apa yang dilakukan kartu grafis dan bagaimana kelanjutannya, memungkinkan untuk pengoptimalan kasus tertentu
sumber
OpenGL sebagaimana namanya adalah pustaka grafis. Meskipun dikembangkan dengan 3d dalam pikiran, tidak ada asumsi hardcode di perpustakaan bahwa Anda akan menggunakan 3d. Selain itu, berkat kemampuan 3D-nya, beberapa hal yang sulit dilakukan dalam pendekatan 2d yang sepele. Contoh:
Ini hanya beberapa keunggulan yang datang dari atas kepala saya, saya kira ada beberapa yang lain.
sumber
Sementara OpenGL adalah API 3D, Anda masih bisa menggunakannya untuk membuat game 2D. Anda dapat memalsukan lingkungan 2D dalam 3D melalui berbagai teknik, seperti membatasi data ke pesawat.
Namun, ada dukungan terbatas dalam API aktual untuk melakukan ini dengan cara yang jelas (misalnya, tidak ada fungsi "nyalakan mode 2D"). Cara-cara di mana Anda akan mensimulasikannya (yang dapat Anda temukan di banyak tutorial online) mungkin sulit untuk dipahami sepenuhnya tanpa memahami pipa 3D yang sebenarnya digunakan di bawah tenda.
Kedengarannya seperti Anda telah melihat OpenGL untuk sementara waktu dan mungkin sangat memahami dasar-dasar itu. Namun, jika Anda merasa goyah pada mereka, Anda mungkin ingin memulai dengan gim Anda dengan menggunakan perpustakaan 2D yang dibangun di atas OpenGL, seperti cocos2d . Ini akan memberi Anda beberapa pengalaman dengan tampilan 2D API umumnya dan masih memberi Anda manfaat dari back-end 3D yang dipercepat perangkat keras, jika Anda merasa belum siap untuk menyelesaikan semuanya sendirian.
sumber
Banyak pustaka grafis 2d seperti SDL atau SFML menggunakan akselerasi perangkat keras OpenGL. Ini memberi Anda manfaat kinerja OpenGL, tetapi mengabstraksi detail tingkat rendah yang jahat di balik API yang jauh lebih sederhana.
sumber
Saya sekarang memiliki banyak pengalaman dalam pemrograman OpenGl, dan saya dapat memberitahu Anda itu adalah rasa sakit. Di masa lalu ketika saya mulai pemrograman saya sangat produktif di lingkungan yang sederhana seperti BlitzBasic. Kemudian saya mulai melangkah ke langkah selanjutnya dengan belajar C ++ dan OpenGl. Dan ketika Anda tidak memiliki guru atau orang yang baik untuk bertanya, Anda akan secara permanen mengalami layar hitam. Masalah terbesar adalah neraka negara OpenGl. Ada banyak switch yang bisa Anda tukarkan untuk mengubah status operasi. Dan beberapa sakelar bergantung pada sakelar lainnya. misalnya glGet (GL_TEXTURE_BINDING_2D) tergantung pada glGet (GL_ACTIVE_TEXTURE). Dan dokumentasi negara mana tergantung pada negara mana yang bukan yang terbaik. Banyak operasi seperti pemuatan tekstur mengharuskan Anda untuk mengubah keadaan ini yang sangat sering menyebabkan kerusakan kode lain yang memerlukan keadaan lama. Dan kemudian ada masalah ini yang OpenGl sebagai implementasi tergantung perilaku, sehingga program Anda berjalan di komputer Anda tetapi di komputer lain semua yang Anda lihat adalah hitam. Yang dapat Anda lakukan di sini hanyalah menebak apa yang salah dalam 10.000 baris kode Anda. Jadi jika Anda suka frustrasi maka ya gunakan OpenGl untuk hal-hal 2D. Untuk semua orang lain, jangan lakukan itu jika Anda tidak membutuhkannya. Anda bisa menjadi produktif di OpenGl, tetapi itu akan menghabiskan banyak waktu dan saraf Anda. Lebih dari yang Anda inginkan. Anda bisa menjadi produktif di OpenGl, tetapi itu akan menghabiskan banyak waktu dan saraf Anda. Lebih dari yang Anda inginkan. Anda bisa menjadi produktif di OpenGl, tetapi itu akan menghabiskan banyak waktu dan saraf Anda. Lebih dari yang Anda inginkan.
sumber
Unity3D menggunakan OpenGL, dan saya menggunakannya untuk platformer 2D dan 2.5D. Unity3D pada dasarnya adalah Mesin Game 3D, tetapi juga digunakan untuk game 2D dan 2.5D juga. Anda dapat memiliki x, y, z pesawat dan hanya membatasi pergerakan atau rotasi ke 2 pesawat itu, menciptakan suasana 2D pada dasarnya dunia 3D.
sumber