2013-04-22 17 views
5

Bazı bilgisayarlarda (örneğin dizüstü bilgisayarlar için) birden fazla monitör bulunmadığında bile birden fazla grafik kartı/yonga seti takılı olabilir.Belirli bir grafik sürücüsü ile OpenGL içeriği nasıl oluşturulur?

Hem Intel hem de Nvidia grafik donanımına sahip bir dizüstü bilgisayar sistemiyle ilgili sorun yaşıyorum. Intel'in sürücülerinin OpenGL desteğindeki kötü şöhreti var ve kodum açıklanamayan bir görüntülemeye karşı çalışıyor, çünkü Nvidia'yı değil, Intel sistemini varsayılan olarak render bağlamını oluştururken görüyor.

Başlangıçta bunu önlemek için herhangi bir yolu var mı? "Kullanılabilen tüm grafik sürücüler için anket yapmak, eğer mümkünse Intel sürücülerinden sakınmak ve bana işe yarayan sürücü ile bir OpenGL oluşturma bağlamı oluşturmak" gibi bir şey söylemek ister misiniz?

+0

NVidia panelinde varsayılan GPU'yu seçebilirsiniz –

+0

@MichaelIV: Teşekkürler, ama istediğim bu değil. –

+0

Sadece sürücüler hakkında değil, aynı zamanda GPU hakkında da. Bugünün notebook'ları 2 karttan oluşuyor: Intel ve adanmış olan (NVidia veya ATI). Donanımı ilk önce NVidia panel gibi önyargı veya windows arabirimiyle ayarlamanız gerekiyor. İlk önce farklı sürücüleri seçmeye çalışan donanımı değiştirmemek anlamsız. –

cevap

1

Orada ne istediğini yapmak için hiçbir taşınabilir yol, ama bu belge NVIDIA Optimus teknolojisi ile sistemlerde "Yüksek Performanslı Grafik Render" zorla açıklamaktadır: Özellikle

http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf 

bölümüne "bakınız diyor "(sürücü Yayın 302 yılında yeni) Genel Değişken NvOptimusEnablement:

Yayın 302 sürücüleri ile başlayarak, uygulama geliştiricileri zamanında doğrudan Optimus sürücüsü High Performance 012 kullanmak olabilirHerhangi bir uygulamayı görüntüleyen grafikler - 'un mevcut uygulama profili olmadığı uygulamalar. Bunu, NvOptimusEnablement adlı global bir değişkene dışa aktararak yapabilir. Optimus sürücüsü, dışa aktarmanın varlığını ve değerini arar. Sadece şu anda DWORD'nin LSB içeriği önemlidir. 0x00000001 değeri, değerini gösterir, bu işlemin Yüksek Performans Grafikleri kullanılarak gerçekleştirilmesi gerekir. 0x00000000'ün değeri, bu yöntemin yok sayılması gerektiğini belirtir.

Örnek Kullanım:

extern "C" { 
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; 
} 

başka olasılık WGL_nv_gpu_affinity uzantısıdır, ancak WGL bağlam bunu desteklemesi gerekir ve karışık Intel/NVIDIA sistemlerinde çalışmaktadır olmadığından emin değilim:

http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt 
İlgili konular