Direct3D Hata Ayıklama Bilgilerini Etkinleştirme (Direct3D 9)

Hata ayıklama sırasında Direct3D nesneleri hakkında daha fazla bilgi mi bulmaya çalışıyorsunuz? Örneğin aşağıdaki ekran görüntüsünde, izleme penceresinde bir Direct3D arabirimine baktığınızda genellikle ne gördüğünüz gösterilir.

İzleme penceresinde Direct3D arabiriminin ekran görüntüsü

Nesnenin tüm özelliklerini içeren yansıtılmış bir nesnenin izleme penceresinde görüntülenebilmesi için çekirdek hata ayıklama nesnelerini etkinleştirebilirsiniz. D3D9.h dosyasından önce kodunuzda aşağıdaki #define eklemeniz yeterlidir:

#define D3D_DEBUG_INFO

Hata ayıklama bilgilerini etkinleştirmek için, #define D3D9.h dosyasından önce derlenmelidir (DXUT kullanan tüm programlar, hata ayıklama için derlendiğinde D3D_DEBUG_INFO otomatik olarak etkinleştirilir). BIR SDK örneği çalıştırıyorsanız, bunu DXStdAfx.h dosyasında görebilirsiniz (bu, tüm C++ örneklerini etkiler). Hata ayıklama Direct3D çalışma zamanını da çalıştırıyor olmanız gerekir (gerekirse Denetim Masası'ndan etkinleştirilebilir).

aşağıda BasicHLSL Örneğikullanan bir örnek verilmiştir.

  1. #define 37. satırdan önce Dxstdafx.h dosyasına ekleyin.
  2. Hata ayıklama projesi oluşturun.
  3. BasicHLSL.cpp'de 307. satıra bir kesme noktası ayarlayın.
  4. Hata ayıklayıcısını çalıştırın.

Aşağıdaki ekran görüntüsü, izleme penceresinden Direct3D doku nesnesi hakkında alabileceğiniz ayrıntılı bilgi türünü gösterir.

İzleme penceresinde Direct3D doku nesnesinin ekran görüntüsünü

Not

Nesne özelliği adları görünür ve değerler yalnızca hata ayıklama çalışma zamanı etkinleştirildiğinde doğru olur. Perakende yürütme ortamında çalıştırılırken değerler geçersizdir.

 

Genişletilmiş Hata Ayıklama için Çağrı Yığınını Kullanma

Direct3D hata ayıklama etkinleştirildiğinde, her nesne oluşturulduğunda bir çağrı yığınına da bakabilirsiniz. Bu, uygulamanızı çok yavaş hale getirir, ancak kaynak sızıntılarını denetlemek için kullanılabilir. Çağrı yığınını yazmak için aşağıdaki kayıt defteri anahtarını 1 olarak ayarlayın:

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

Uygulamanızı hata ayıklama etkin olarak oluşturmak, bu ek değişkene erişmenizi sağlayacaktır:

  LPCWSTR CreationCallStack;

Bu değişken, bir nesne her oluşturulduğunda çağrı yığınını depolar. Bu, uygulamanızı çok yavaş hale getirir, ancak kaynak sızıntılarında hata ayıklamak için kullanılabilir.

Programlama İpuçları