DirectX 11 Rendering Objek Luar Dalam

Saya mengalami banyak kesulitan saat mencoba mengikuti buku Frank Luna untuk Pemrograman 3D DirectX 11, dan saat ini saya sedang mengerjakan bab 7 bagian 2. Saya telah mengimpor file model Tengkorak dan mulai merendernya. Hal yang aneh adalah ketika saya merendernya, sepertinya bagian belakang dirender di atas bagian depan. Saya cukup yakin inilah yang terjadi. Namun saya mengajukan pertanyaan ini untuk bantuan dan bimbingan tentang kesalahan saya. Saya akan mengedit posting ini dengan memasukkan kode saya jika diperlukan untuk membantu saya mencari tahu di mana kesalahan saya, Terima kasih banyak! (foto terlampir)

Foto - Menghadap Tengkorak, Sedikit ke Kiri

Foto - Di Atas Tengkorak, Menghadap ke Bawah

EDIT: Saya telah menetapkan breakpoint dalam kode saya setelah loop panggilan undian pertama dan tidak menunjukkan wajah apa pun yang berada di belakang bagian depan, jadi masalah diselesaikan pada frame ini, tetapi ketika saya melanjutkan ke frame berikutnya, ini adalah ketika masalah dimulai.


person Sharpie    schedule 08.09.2017    source sumber
comment
Apakah model tersebut terlihat sama ketika Anda memodifikasi transformasi z-nya (memindahkannya lebih jauh)? Berapa nilai yang Anda tentukan untuk bidang dekat dan bidang jauh dari frustum Anda?   -  person Asesh    schedule 08.09.2017
comment
Sepertinya Anda menyetel mode pemusnahan yang salah saat mengonfigurasi deskripsi rasterisasi.   -  person user7860670    schedule 08.09.2017
comment
Saya menggunakan XMMatrixLookAtLH, haruskah saya mengimplementasikan XMMatrixPerspectiveLH?   -  person Sharpie    schedule 08.09.2017
comment
@VTT Saya telah mencoba mengubah deskripsi rasterizer tetapi gambar-gambar itu default tanpa perubahan status rasterizer   -  person Sharpie    schedule 08.09.2017
comment
Setelah Anda membuat status rasterizer, Anda perlu menerapkannya untuk merender pipa dengan memanggil RSSetState sebelum menggambar mesh. Sakelar mode pemusnahan harus terlihat jelas. Di sisi lain, hal ini juga terlihat seperti tidak ada pengujian kedalaman yang dilakukan: tampilan dari atas menunjukkan bahwa Anda menggambar tengkorak terlebih dahulu dan kemudian gigi di atasnya - jika ada pengujian kedalaman maka gigi tidak akan terlihat bahkan dengan pemusnahan yang salah.   -  person user7860670    schedule 08.09.2017
comment
@VTT, itulah masalahnya saya bahkan belum menerapkan desc rasterizer untuk mengubah proses rasterisasi sama sekali. Gambar-gambar tersebut sepenuhnya default sehubungan dengan proses rasterisasi.   -  person Sharpie    schedule 08.09.2017
comment
Saya memiliki buffer kedalaman yang telah disetel dan setiap panggilan undian dihapus dengan: mDevContext-›ClearDepthStencilView(mDepthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);   -  person Sharpie    schedule 08.09.2017
comment
Namun apakah Anda mengikatnya dengan benar agar uji kedalaman berfungsi? Anda mungkin ingin melihat Mengonfigurasi Fungsi Stensil Kedalaman.   -  person user7860670    schedule 08.09.2017


Jawaban (2)


Masalah seperti ini terkadang berhubungan dengan pengaturan CullMode di D3D11_RASTERIZER_DESC. Coba ubah dari D3D11_CULL_BACK ke D3D11_CULL_FRONT atau sebaliknya. Lihat juga opsi FrontCounterClockwise dari D3D11_RASTERIZER_DESC.

person nh_    schedule 08.09.2017
comment
Melihat gambarnya, menurut saya itu bukan karena mode pemusnahan - person Asesh; 08.09.2017

Saya menemukan apa yang menyebabkan kesedihan saya. Saya telah menggunakan kelas DirectXToolKits SpriteFont dan SpriteBatch untuk menggunakan fungsi DrawString untuk menampilkan penghitung FPS di sudut kiri atas layar, dan itu pasti mengacaukan panggilan ID3D11DeviceContext::DrawIndexed. Terima kasih atas semua masukan dan curah pendapat Anda!!

person Sharpie    schedule 08.09.2017
comment
Anda harus melihat wiki untuk mengetahui secara pasti status SpriteBatch yang disetel. Anda harus memastikan untuk menyetel status apa pun yang Anda andalkan, dan menghapus semua status 'tidak jelas' yang dapat menyebabkan masalah. - person Chuck Walbourn; 10.09.2017
comment
Terima kasih atas masukannya. Saat ini saya sedang mencoba mencari solusinya - person Sharpie; 10.09.2017