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.
Uygulamalar desteklenen Direct3D cihaz türlerini algılamak için donanımı sorgulayabilir. Bu bölüm, görüntü bağdaştırıcılarını listeleme ve Direct3D cihazları seçmeyle ilgili birincil görevler hakkında bilgi içerir.
Bir uygulamanın uygun bir Direct3D cihazı seçmek için bir dizi görev gerçekleştirmesi gerekir. Aşağıdaki adımların tam ekran bir uygulamaya yönelik olduğunu ve çoğu durumda pencereli bir uygulamanın bu adımların çoğunu atlayabileceğinizi unutmayın.
Başlangıçta, uygulamanın sistemdeki görüntü bağdaştırıcılarını numaralandırması gerekir. Bağdaştırıcı, fiziksel bir donanım parçasıdır. Grafik kartının, çift başlı ekranda olduğu gibi tek bir bağdaştırıcıdan daha fazlasını içerebileceğini unutmayın. Çoklu monitör desteğiyle ilgilenmeyen uygulamalar bu adımı göz ardı edebilir ve D3DADAPTER_DEFAULT adım 2'deki IDirect3D9::EnumAdapterModes yöntemine geçirebilir.
Her bağdaştırıcı için uygulama, IDirect3D9::EnumAdapterModesçağırarak desteklenen görüntü modlarını numaralandırır.
Gerekirse uygulama, aşağıdaki kod örneğinde gösterildiği gibi IDirect3D9::CheckDeviceTypeçağırarak numaralandırılmış her görüntü modunda donanım hızlandırma olup olmadığını denetler. Bunun IDirect3D9::CheckDeviceTypeiçin olası kullanımlardan yalnızca biri olduğunu unutmayın; Ayrıntılar için bkz. Donanım Desteğini Belirleme (Direct3D 9).
D3DPRESENT_PARAMETERS Params; // Initialize values for D3DPRESENT_PARAMETERS members. Params.BackBufferFormat = D3DFMT_X1R5G5B5; if(FAILED(m_pD3D->CheckDeviceType(Device.m_uAdapter, Device.m_DevType, Params.BackBufferFormat, Params.BackBufferFormat, FALSE))) return E_FAIL;Uygulama, IDirect3D9::GetDeviceCaps yöntemini çağırarak bu bağdaştırıcıdaki cihaz için istenen işlevsellik düzeyini denetler. Bu yöntem tarafından döndürülen özelliğin, IDirect3D9::CheckDeviceTypetarafından doğrulanan tüm görüntüleme modlarında bir cihaz için sabit olacağı garanti edilir.
Cihazlar, cihaz tarafından desteklenen sıralanmış bir görüntü modunun formatındaki yüzeylere her zaman işleyebilir. Uygulamanın farklı bir biçimdeki bir yüzeye işlenmesi gerekiyorsa, IDirect3D9::CheckDeviceFormatçağırabilir. Eğer cihaz biçime işleyebilirse, IDirect3D9::GetDeviceCaps tarafından döndürülen tüm özellikler kesinlikle geçerli olur.
Son olarak uygulama, IDirect3D9::CheckDeviceMultiSampleType yöntemini kullanarak, tam sahne antialiasing gibi çok örnekli tekniklerin bir işleme biçimi için desteklenip desteklenmediğini belirleyebilir.
Önceki adımları tamamladıktan sonra, uygulamanın çalışabileceği görüntü modlarının bir listesi olmalıdır. Son adım, gerekli sayıda arabellek ve kenar yumuşatma için yeterli cihazdan erişilebilir belleğin mevcut olduğunu doğrulamaktır. Modun ve çok örnekli birleşimin bellek tüketimini doğrulamadan tahmin etmek mümkün olmadığından bu test gereklidir. Ayrıca, bazı görüntü bağdaştırıcısı mimarilerinde cihaz tarafından erişilebilen sabit miktarda bellek olmayabilir. Bu, bir uygulamanın tam ekran moduna geçtiğinde yetersiz video belleği hatalarını bildirebilmesi gerektiği anlamına gelir. Genellikle, bir uygulama kullanıcıya sunduğu modlar listesinden tam ekran modunu kaldırmalı veya arka arabellek sayısını azaltarak veya daha az karmaşık bir çok örnekleme tekniği kullanarak daha az bellek kullanmayı denemelidir.
Pencereli bir uygulama benzer bir görev kümesi gerçekleştirir.
- Pencerenin istemci alanı tarafından kapsanan masaüstü dikdörtgenini belirler.
- Bağdaştırıcıları numaralandırır ve monitörü istemci alanını kaplayan bağdaştırıcıyı arar. İstemci alanı birden fazla bağdaştırıcıya aitse, uygulama her bağdaştırıcıyı bağımsız olarak çalıştırmayı veya tek bir bağdaştırıcıyı kullanıp, sunum sırasında Direct3D'nin pikselleri bir cihazdan diğerine aktarmasına izin vermeyi seçebilir. Uygulama ayrıca önceki iki adımı göz ardı edebilir ve D3DADAPTER_DEFAULT bağdaştırıcısını kullanabilir. Pencere ikincil bir monitöre yerleştirildiğinde bunun daha yavaş bir işlemle sonuçlanabileceğini unutmayın.
- Uygulamanın IDirect3D9::CheckDeviceType çağırarak cihazın masaüstü modundayken belirtilen biçimdeki bir arka arabellekte işlemeyi desteklenip destekleyemediğini belirlemesi gerekir.
IDirect3D9::GetAdapterDisplayMode, aşağıdaki kod örneğinde gösterildiği gibi masaüstü görüntü biçimini belirlemek için kullanılabilir.
D3DPRESENT_PARAMETERS Params; // Initialize values for D3DPRESENT_PARAMETERS members. // Use the current display mode. D3DDISPLAYMODE mode; if(FAILED(m_pD3D->GetAdapterDisplayMode(Device.m_uAdapter , &mode))) return E_FAIL; Params.BackBufferFormat = mode.Format; if(FAILED(m_pD3D->CheckDeviceType(Device.m_uAdapter, Device.m_DevType, Params.BackBufferFormat, Params.BackBufferFormat, FALSE))) return E_FAIL;
İlgili konular