Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Direct3D 10 çalışma zamanı, çekirdekteki temel işlevlerden başlayıp dış katmanlarda isteğe bağlı ve geliştirici yardımı işlevselliği oluşturarak katmanlarla oluşturulur.
Çekirdek Katmanı
Çekirdek katmanı varsayılan olarak vardır; API ile cihaz sürücüsü arasında çok ince bir eşleme sağlayarak yüksek frekanslı çağrılar için ek yükü en aza indirir. Çekirdek katman performans için gerekli olduğundan, yalnızca kritik doğrulama gerçekleştirir.
Kalan katmanlar isteğe bağlıdır. Genel bir kural olarak, katmanlar işlevsellik ekler, ancak mevcut davranışı değiştirmez. Örneğin, temel işlevler, örneklenen hata ayıklama katmanından bağımsız olarak aynı dönüş değerlerine sahip olur, ancak hata ayıklama katmanı örneği oluşturulursa ek hata ayıklama çıkışı sağlanabilir.
D3D10CreateDevice çağrısı yaparak ve bir veya daha fazla D3D10_CREATE_DEVICE_FLAG değeri sağlayarak bir cihaz oluşturulduğunda katmanlar oluşturun.
Hata Ayıklama Katmanı
Hata ayıklama katmanı kapsamlı ek parametre ve tutarlılık doğrulaması sağlar (gölgelendirici bağlantısını ve kaynak bağlamayı doğrulama, parametre tutarlılığını doğrulama ve hata açıklamalarını raporlama gibi). Hata ayıklama katmanı tarafından oluşturulan çıktı, ID3D10InfoQueue Arabirimikullanılarak erişilebilen bir dize kuyruğundan oluşur (bkz. ID3D10InfoQueue (Direct3D 10) ile Hata Ayıklama Çıktısını Özelleştirme). Çekirdek katmanı tarafından oluşturulan hatalar, hata ayıklama katmanı tarafından uyarılarla vurgulanır.
Hata ayıklama katmanını destekleyen bir cihaz oluşturmak için DirectX SDK'sını yüklemeniz (D3D10SDKLayers.DLL almak için) ve ardından D3D10CreateDeviceçağrılırken D3D10_CREATE_DEVICE_DEBUG bayrağını belirtmeniz gerekir. Tabii ki, hata ayıklama katmanıyla bir uygulama çalıştırmak önemli ölçüde daha yavaş olacaktır. D3DX10 API'leri için hata ayıklama iletilerini etkinleştirmek/devre dışı bırakmak için, D3DX10DebugMuteöğesini arayın.
Hata ayıklama katmanı bellek sızıntılarını listelediğinde, bunların kolay adlarıyla birlikte nesne arabirimi işaretçilerinin bir listesini oluşturur. Varsayılan kolay ad : "<adsız>". ID3D10DeviceChild::SetPrivateData yöntemini ve D3Dcommon.h dosyasındaki WKPDID_D3DDebugObjectName GUID'sini kullanarak kolay adı ayarlayabilirsiniz. Örneğin, mytexture.jpgSDKLayer adıyla pTexture adını vermek için aşağıdaki kodu kullanın:
const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
Genellikle bu çağrıları üretim sürümünüzden derlemeniz gerekir.
Başvuru Katmanına Geç
Bu katman, bir uygulamanın donanım cihazı (HAL) ile başvuru veya yazılım cihazı (REF) arasında geçişine olanak tanır. Bir cihazı değiştirmek için önce başvuruya geçme katmanını destekleyen bir cihaz oluşturmanız (bkz. D3D10CreateDevice) ve ardından ID3D10SwitchToRef::SetUseRefçağırmalısınız.
Tüm cihaz durumları, kaynaklar ve nesneler bu cihaz geçişi aracılığıyla korunur. Ancak, bazen kaynak verileriyle tam olarak eşleşmesi mümkün değildir. Bunun nedeni, referans cihazında kullanılamayan bir donanım cihazı için bazı bilgilerin mevcut olmasıdır.
Neredeyse tüm gerçek zamanlı uygulamalar işlem hattının HAL uygulamasını kullanır. İşlem hattı bir donanım cihazından başvuru cihazına geçirildiğinde, işleme işlemleri hem donanımda hem de yazılımda aynı anda gerçekleştirilir. Yazılım cihazı işlenirken, kaynakların sistem belleğine indirilmiş olması gerekir. Bu, yer açmak için sistem belleğinde önbelleğe alınmış diğer kaynakların çıkarılabilmesini gerektirebilir.
Not
Bu başvuru katmanına geçiş özelliği yalnızca Direct3D 10 ve Direct3D 10.1 sürümlerinde desteklenir ve artık Direct3D 11 ve sonraki sürümlerde desteklenmez.
Thread-Safe Katmanı
Bu katman, çok iş parçacıklı uygulamaların cihaza birden çok iş parçacığından erişmesine izin verecek şekilde tasarlanmıştır.
Direct3D 10 uygulaması, cihaz işlevlerini kullanarak cihaz eşitlemesini denetleyebilir. Bu, bir uygulamanın kritik bölümleri etkinleştirmesine/devre dışı bırakmasına (çoklu iş parçacığı korumasını geçici olarak etkinleştirme/devre dışı bırakma) ve birden çok Direct3D 10 API giriş noktası üzerinde kritik bölüm kilidi almasına/serbest bırakmasına olanak tanır. İş parçacığı güvenli katmanı varsayılan olarak etkindir. Tek iş parçacıklı uygulamalar için iş parçacığı güvenli katmanın performans üzerinde hiçbir etkisi yoktur.
Direct3D 9 ile Direct3D 10 arasındaki farklar:
- Direct3D 9'un aksine, Direct3D 10 API'sinin varsayılan değeri tamamen iş parçacığı güvenlidir.
İlgili konular