ALT-TAB'ın 'sinir bozucu' / yavaş / glitchy olmasına ne sebep olabilir?


25

Bu daha açık uçlu bir sorudur, ancak umarım konunun nasıl önlenebileceği hakkında iyi bir fikir edinebilirim.

Windows'ta Oyunlar oynarken, ALT-SEKME kullanmak isteyebilirim. Bazı oyunların hiçbir problemi yok, diğerleri o kadar kolay değil: AGES'i değiştirip geri almak için alabilirler.

Sadece bu davranışa neyin sebep olduğunu merak ediyorum. Bu daha fazla DirectX veya OpenGL olayı mı? Oyunların 'zeki' olmasından ve ekran ayarları değiştiğinde önbelleği saklamasından / silmesinden mi kaynaklanıyor? (ALT-SEKME yaparken ne tür bir sinyal aldıklarını tahmin ediyorum?)

Kendi sorunum yok, ama ne kaçınacağımı ve hangi “akıllı” numarasının bu tür korkunç müşteri deneyimine neden olabileceğini bilmek isterim?


1
Harika soru! Umarım, her zamanki gibi bazı anlayışlı cevaplar alırız!

Yanıtlar:


17

Bazı durumlarda ALT-TAB, DirectX cihazının kaybolmasına neden olur. Cihaz kaybolduğunda tüm GPU kaynakları (köşeler, dokular, gölgelendiriciler vb.) Geçersiz sayılmalıdır ve tekrar kullanılamaz. Burada MSDN referansı .

Bu kaybedilen kaynaklar serbest bırakılmalı ve ardından cihaz geri yüklendiğinde yeniden oluşturulmalıdır. Oyunların çoğunda, bu kaynakları geri yüklemek, diskten yeniden yüklenmek için çok fazla veri gerektirir - genellikle oyun / seviye başlangıcında yapılan yükleme prosedürü.

Bundan kaçınmak için ne yapılabilir?

  • Verilerinizin önbelleğini ram içinde tutabilirsiniz, böylece onu GPU'ya geri aktarmak HD'den yeniden yüklemekten daha hızlı olacaktır. DirectX'in bunu otomatik olarak yapmasının bir yolu olduğuna inanıyorum.
  • DirectX'in yeni bir sürümünü kullanın. Bu alıntı ( kaynak ) DirectX 9Ex'teki MSDN'den alınmıştır:

Cihazlar şimdi sadece iki durumda kaybedilir; donanım sıfırlandığından, takıldığı için ve aygıt sürücüsü durdurulduğunda. Donanım kilitlendiğinde, cihaz ResetEx'i arayarak sıfırlanabilir. Donanım kilitlenirse, doku belleği kaybolur.


Bu teklif için bir link verebilir misiniz? Ayrıca, masaüstünü kilitlediğinizde cihazın kaybolduğunu da buluruz.
Kylotan

Alıntı için bağlantıyı ekledim.
CiscoIPPhone

1
DirectX davranışındaki değişiklik, sürücü modelindeki değişimin bir yan etkisidir. Yani, WDDM gerektirir. SO sadece Vista / Win7.
Bahbar

7

Direct3D'de , tam ekran penceresinden ALT-SEKME yaparken bir cihaz kaybolabilir . Bu durumda, kaynakları serbest bırakmanız ve geri yüklemeniz ve cihazı sıfırlamanız gerekir. Oyunun karmaşıklığına veya geliştiricilerin tembelliğine bağlı olarak bunu yapmak zor olabilir (hi Valve!). OpenGL'nin de aynı sorunu yaşadığını sanmıyorum, çünkü sürücü OpenGL içeriğini sizin için tutmaktan sorumludur, ancak emin değilim.

Bir DirectX uygulamasında ALT-TAB desteği için en iyi uygulamalar hakkında, MSDN ve diğer kaynaklardan faydalı bağlantılar içeren bir StackOverflow sorusu var .


3
Haklısın, OpenGL'nin bundan (bu kadar) muzdarip olmamasının nedeni, sürücünün Windows'ta senin için her şeyin bir kopyasını saklaması. Bu, GL uygulamalarının DX uygulamalarından daha fazla RAM kullanmasına neden olabilir, ancak iyi niyetli bir DX uygulaması, içerik verilerini yine de geri yüklemesi gerektiğinde her şeyi önbelleğe almalıdır, bu nedenle önbelleklemenin sorumluluğunun kim olduğu anlamına gelir.
Branan

Bu doğru (OpenGL hakkında).
Topright

0

Mevcut serbest ram miktarı olabilir. Çok düşükse, oyununuz çalışırken, Windows hizmetlerinin çoğunu takas alanına gizler (yani RAM'e yüklenen verilerin çoğunu alır ve bunun yerine sabit sürücünüzün özel bir alanına koyar) mümkün olan en fazla miktarda RAM boşluğuna sahip olmak.

Ardından, oyundan pencerelere alt + sekmesi yaptığınızda, çalışmak için bu hizmetlerin RAM'e yüklenmesi gerekir, böylece oyun verilerinizi RAM'den alır, takasta depolar ve Windows verilerini çeker. RAM takas.

Bildiğiniz gibi, sabit sürücüye yazmak, RAM'le karşılaştırıldığında AGES'i alabilir. Aynı şey, ağır bir oyundan çıktığınızda da oluyor. Bu nedenle hem oyun hem de pencereler için yeterli RAM alanına sahip olmak gerçekten daha rahat olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.