Itu adalah ide yang buruk sejauh itu tidak masuk akal. Tidak ada "pengaturan" yang belum Anda lakukan, kecuali untuk matriks proyeksi ortho (yang harus Anda lakukan dalam hal apa pun).
Portabilitas mungkin bukan masalah, meskipun seharusnya begitu. IHV tampaknya sangat enggan untuk menjatuhkan dukungan untuk mode segera untuk masa mendatang (tampaknya "bekerja dengan baik" bahkan dalam profil inti), jadi meskipun mode langsung seharusnya sudah mati sejak lama, itu mungkin akan tetap selamanya. Kinerja adalah cerita lain. Apakah Anda benar-benar menginginkan sesuatu yang menyumbang 0,1% dari kompleksitas adegan untuk mengkonsumsi 15-20% dari waktu CPU - panggilan GL relatif ringan, dibandingkan dengan misalnya DX, tetapi mereka tidak gratis - dan 15-20% dari waktu bingkai nyata karena menunda pipa? Bisakah Anda membayarnya dengan anggaran waktu Anda? Sebagian besar permainan tidak bisa.
Dan tentu saja, keanehan. Oh kebiasaan itu. Keindahan nyata dari mode langsung adalah bahwa (tampaknya) mudah dan mudah untuk melakukan sesuatu seperti menggambar beberapa paha depan dengan cepat. Pada kenyataannya, mode langsung bisa sangat menyusahkan di belakang, begitu penuh dengan perangkap yang tidak jelas.
Di sisi lain, sama mudahnya (dan lebih mudah jika Anda bertanya kepada saya!) Hanya menulis fungsi 5-LOC kecil DrawQuad
yang ketika dipanggil menambahkan koordinat titik dan indeks ke buffer memori dan menambah penghitung. Yang, mengejutkan, Anda kemudian dapat menggambar dengan glDrawArrays/Elements
dan yang dapat Anda gunakan kembali (salinan GPU, bukan hanya salinan pengguna!) Bingkai berikutnya apa adanya selama tidak ada yang berubah.
Mode langsung harus, tidak ada cara lain, mengalokasikan buffer dan melakukan transfer PCIe setiap waktu. Atau, sesuatu yang setara dalam latensi (GPU membaca memori utama melalui bus, apa pun). Pengemudi tidak mungkin tahu (atau berasumsi) bahwa data tetap sama persis dengan bingkai sebelumnya.
Mendapatkan data ke GPU adalah kecepatan tinggi, tetapi juga operasi latensi tinggi . Tidak hanya transfer bus per se rumit, protokol latency tinggi (beberapa lapisan protokol, packetizing, ucapan terima kasih, dll), tetapi juga tidak semua GPU bahkan mampu mentransfer dan menarik pada saat yang sama, atau jika mereka dapat melakukannya , mereka mungkin tidak dapat setiap saat untuk beralih di antara atau memulai operasi baru secara bebas saat melakukan sesuatu yang berbeda. Baca sebagai: Jangan mentransfer dengan sia-sia .