Bagaimana cara menggunakan OpenGL modern untuk game 2D?

9

Saya telah menemukan banyak tutorial OpenGL (3.0+) "modern" untuk 3D, tetapi saya tidak menemukan apa-apa ketika mencari informasi tentang cara menggunakannya untuk pengembangan game 2D. Bagaimana saya bisa mulai menggunakan OpenGL untuk 2D gamedev?

Secara khusus, saya tertarik untuk mendapatkan jawaban atas topik-topik berikut:

  • Bagaimana saya mengatur berbagai matriks untuk proyeksi ortografis?
  • Apakah shader banyak digunakan dalam aplikasi 2D seperti pada yang 3D? Jika demikian, apa tujuan mereka dalam pengaturan 2D?
  • Bagaimana saya harus menangani sejumlah besar tekstur jelas diperlukan untuk game 2D?

Saya minta maaf untuk pertanyaan yang relatif luas, tetapi saya telah menghabiskan waktu yang lama mencari dan saya menemukan sangat sedikit informasi berguna yang berlaku untuk OpenGL modern.

Alexis King
sumber

Jawaban:

11
  • Bagaimana saya harus mengatur berbagai matriks saya untuk proyeksi Orthografis?

Tujuan Anda adalah 2D, bukan? Jadi, Anda tidak perlu proyeksi apa pun. Proyeksi adalah tindakan memadatkan dunia 3D ke bidang 2D. Atur shader sehingga defaultnya adalah koordinat Z dari setiap vertex 0.0dan Anda harus diatur.

Anda mungkin menggunakan matriks skala untuk koordinat X dan Y. Scaling begitu -10.0untuk 10.0menjadi -1.0untuk 1.0. Demi referensi, matriks untuk melakukan itu adalah:

0.1   0.0   0.0
0.0   0.1   0.0
0.0   0.0   1.0
  • Apakah shader banyak digunakan dalam aplikasi 2D seperti pada yang 3D? Jika demikian, apa tujuan mereka dalam pengaturan 2D?

Mereka bisa menjadi. Mereka masih dapat digunakan untuk pencahayaan Per-Pixel, memberikan kedalaman palsu untuk objek. Mereka juga dapat digunakan untuk efek tekstur, efek air, generasi gambar ... Anda bahkan dapat menggunakannya untuk melakukan perhitungan fisika dengan sedikit tipu daya.

Cara lain untuk mengatakannya adalah: Semuanya digunakan untuk 3D. Itu hanya diterapkan secara berbeda, dan tidak terdokumentasi dengan baik. Meskipun orang-orang yang bermain game 2D mungkin tidak akan menangani kasus Anda jika Anda tidak memiliki efek seperti aslinya, jadi mereka juga tidak diharuskan.

Meskipun Anda perlu mengetahui dasar-dasar shader untuk membuat sprite.

  • Bagaimana saya harus menangani sejumlah besar tekstur jelas diperlukan untuk game 2D?

Sama seperti yang Anda lakukan dalam 3D. Tandan Objek Tekstur, PBO, dan Tekstur Atlas atau beberapa. Mungkin beberapa struktur / kelas, dan sakit kepala juga. Saya pikir itu akan disebut "Manajemen Aset", atau yang serupa.

  • Bagaimana saya bisa memulai dengan gamedev 2D?

Mungkin ada beberapa tutorial di luar sana. Padahal, karena versi 3D lebih umum, saya akan mengatakan untuk belajar OpenGL untuk 3D dan kemudian menerapkan apa yang Anda pelajari ke rekan 2D itu. 3D dan 2D sangat mirip, 2D tidak melacak koordinat Z.

Wolfgang Skyler
sumber
5
Untuk 2D, Anda masih bisa menggunakan proyeksi ortografis dan koordinat Z yang berbeda untuk melakukan buffering Z , jika tidak, Anda harus melakukan sendiri algoritma pelukis dan menggambar dengan urutan yang benar.
congusbongus
@congusbongus sebenarnya, jika Anda menulis dengan transparansi, kemungkinan besar Anda harus melakukan sendiri algoritme pelukis ...
Panda Pajama