Bagikan melalui


Mengaktifkan Informasi Debug Direct3D (Direct3D 9)

Apakah Anda mencoba mencari tahu informasi selengkapnya tentang objek Direct3D selama debug? Misalnya, cuplikan layar berikut menunjukkan apa yang biasanya Anda lihat saat melihat antarmuka Direct3D di jendela watch.

cuplikan layar antarmuka direct3d di jendela watch

Anda dapat mengaktifkan objek debug inti sehingga objek cermin yang berisi semua properti objek dapat dilihat di jendela watch. Cukup sertakan #define berikut dalam kode Anda sebelum file D3D9.h:

#define D3D_DEBUG_INFO

Untuk mengaktifkan informasi debug, #define harus dibangun sebelum file D3D9.h (Program apa pun yang menggunakan DXUT akan secara otomatis mengaktifkan D3D_DEBUG_INFO ketika program dikompilasi untuk debug). Jika Anda menjalankan sampel SDK, Anda dapat melihat ini di DXStdAfx.h (yang memengaruhi semua sampel C++). Anda juga harus menjalankan runtime Direct3D debug (yang dapat diaktifkan dari Panel Kontrol jika perlu).

Berikut adalah contoh menggunakan Sampel BasicHLSL.

  1. Tambahkan #define ke file Dxstdafx.h sebelum baris 37.
  2. Membangun proyek debug.
  3. Mengatur titik henti di baris 307 di BasicHLSL.cpp
  4. Jalankan debugger.

Cuplikan layar berikut menunjukkan jenis informasi terperinci yang bisa Anda dapatkan tentang objek tekstur Direct3D dari jendela watch.

cuplikan layar objek tekstur direct3d di jendela watch

Catatan

Nama properti objek terlihat dan nilainya benar hanya saat runtime debug diaktifkan. Saat berjalan terhadap runtime ritel, nilainya tidak valid.

 

Menggunakan Tumpukan Panggilan untuk Debug yang Diperluas

Dengan debug Direct3D diaktifkan, Anda juga dapat melihat tumpukan panggilan setiap kali objek dibuat. Ini akan membuat aplikasi Anda sangat lambat, tetapi dapat digunakan untuk memeriksa kebocoran sumber daya. Untuk menulis tumpukan panggilan, atur kunci registri berikut ke 1:

\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Direct3D\\
D3D9Debugging\\EnableCreationStack

Membangun aplikasi Anda dengan debug diaktifkan akan memberi Anda akses ke variabel tambahan ini:

  LPCWSTR CreationCallStack;

Variabel ini akan menyimpan tumpukan panggilan setiap kali objek dibuat. Ini akan membuat aplikasi Anda sangat lambat, tetapi dapat digunakan untuk men-debug kebocoran sumber daya.

Tips Pemrograman