Konsep awal
Ok, jadi yang saya kumpulkan sejauh ini adalah ini:
- jangan gunakan pipa tetap (usang atau akan ditinggalkan)
- vbos menyimpan "model objek" (sebagian besar data n)
- vaos menjelaskan bagaimana data diletakkan sehingga panggilan menarik tahu bagian apa dari masing-masing vbo untuk jenis informasi vertex apa (satu vao dapat merujuk ke beberapa vbos, sebaliknya agak sulit)
- setiap panggilan undian juga mengirim data titik ke shader
Bagaimana saya melihat 3D (opsional)
Dengan informasi ini, saya dapat melihat bagaimana menggambar objek rumit 3D sangat bagus dengan OpenGL modern. Anda pada dasarnya memuat banyak model objek (mungkin dari Blender atau perangkat lunak serupa lainnya) ke dalam VBO dengan koordinat lokal, dan kemudian Anda cukup menyediakan untuk setiap instance objek parameter shader yang berbeda (offset) untuk menarik ruang dunia.
Masalah / pertanyaan
Dalam masalah dan prioritas 2D sama sekali berbeda. Anda tidak menggambar banyak objek yang kompleks, Anda tidak perlu matriks proyeksi yang rumit dan yang lainnya dan shader jauh lebih sederhana.
Apa yang akan menjadi cara terbaik untuk menggambar secara teratur (sangat sering, pada dasarnya setiap frame) mengubah geometri dengan OpenGL modern?
Dalam paragraf berikut, Anda dapat melihat beberapa ide masalah (masalah lingkaran dan persegi panjang), yang lebih baik mengidentifikasi jenis perubahan yang saya minati.
Upaya saya (opsional)
Jadi, saya mulai berpikir bagaimana saya akan berurusan dengan menggambar geometri 2D dasar di layar:
- a square: memuat
[(1, 0), (1, 1), (0, 1), (0, 0)]
VBO untuk geometri persegi di ruang lokal, lalu berikan shader lebar aktual persegi dan koordinat dunia serta informasi warna
keren, terlihat mudah. Mari kita pindah ke lingkaran:
- a circle: triangle fan with ... eh. berapa presisi (jumlah vertex)? untuk presisi lingkaran kecil harus kecil dan untuk presisi lingkaran bug harus tinggi. Jelas memuat 1 VBO tidak mungkin cocok untuk semua kasus. Bagaimana jika saya perlu menambahkan presisi karena ukuran lingkaran diubah menjadi lebih besar?
Kurang keren Mari kita pindah ke sesuatu yang sedikit lebih mudah, persegi panjang:
- sebuah persegi panjang: eh. tidak ada "geometri persegi panjang umum". Anda hanya memiliki proporsi lebar / tinggi dan hanya itu, tetapi masing-masing persegi panjang mungkin berbeda jika ukurannya berubah.
Seperti yang Anda lihat, segalanya menjadi menurun dari sana. Terutama dengan poligon yang kompleks dan yang lainnya.
Tidak ada kebijakan kode: P
Saya hanya perlu ikhtisar ide, tidak ada kode yang diperlukan, terutama kode C atau C ++. Katakan saja hal-hal seperti: "buat VBO dengan data titik ini, lalu ikat, ...".