Bagaimana peta game 3D disimpan dan ditangani

9

Saya seorang programmer tetapi belum mengembangkan game apa pun.

Saya telah memainkan berbagai game 3D dan selalu bertanya-tanya bagaimana Peta bidang disimpan dan ditampilkan.

Saya tahu beberapa kartu akselerasi adalah perangkat keras yang diperlukan, tetapi bagaimana tepatnya tampilan diubah tanpa satu pun flicker di layar.

Apakah Anda memiliki materi online untuk membantu saya memahami hal ini.

Terima kasih

Sang Raja
sumber

Jawaban:

9

Secara umum, dunia memetakan banyak segitiga, dan peta adalah daftar segitiga-segitiga ini dan lokasi di dunia dari setiap titik. Proses menggambar mereka adalah:

  • Atur posisi 'kamera' - jika Anda berada di dunia, di sinilah Anda akan berada di posisi dunia
  • Ubah simpul segitiga menjadi 'ruang kamera'
  • Ubah segitiga dari 'ruang kamera' menjadi 'ruang layar' - di sinilah efek perspektif terjadi (benda yang jauh lebih kecil). Segitiga menjadi 2D pada titik ini.
  • Gambar segitiga 2D ke layar tersembunyi.
  • Ketika semua segitiga telah ditarik, perlihatkan layar ke pemain.

Langkah terakhir biasanya dikaitkan dengan frame rate monitor, sehingga proses menampilkan layar tersembunyi dilakukan selama interval v-blank - sebuah konsep yang berasal dari monitor tabung sinar katoda yang memungkinkan sinar katoda bergerak dari kanan bawah ke atas kiri, ini diperlukan dengan cepat, tetapi tidak secara spontan, mengubah tegangan pada kumparan defleksi di bagian belakang tabung sinar.

Ini adalah metode yang sangat sederhana. Untuk mendapatkan kinerja tinggi, Anda perlu menambahkan hal-hal seperti pemindahan permukaan yang tersembunyi, occulsion, penentuan set yang terlihat, dan sebagainya. Ada banyak algoritma yang terlibat dalam memutuskan apa yang akan digambar.

Juga, saya katakan dunia terdiri dari segitiga, tetapi mungkin tidak disimpan dalam disk dengan cara ini. Seringkali, segitiga yang ditarik ke layar ditentukan pada saat run time dari primitif orde tinggi, seperti peta ketinggian, splines, tessalation, primitif geometris (misalnya bola, kotak, dll) dan sebagainya.

Perangkat keras khusus tidak diperlukan - banyak game 3D awal melakukan semuanya dalam perangkat lunak (bahkan pada CPU 8-bit tanpa FPU). Itu hanya membuatnya lebih cepat dan lebih mudah dilakukan.

Pertanyaan yang sangat sederhana. Tidak ada jawaban yang mudah.

Mendesis
sumber
0

Tampilan diubah tanpa flicker di layar karena buffering ganda, Memproses semua data di buffer belakang, maka ketika selesai diproses, Anda menukar di buffer depan.

Slrs
sumber