อะไรทำให้ ALT-TAB เป็น 'น่ารำคาญ' / ช้า / ผิดพลาด?


25

นี่เป็นคำถามปลายเปิดมากกว่า แต่ฉันหวังว่าจะได้รับข้อมูลเชิงลึกที่ดีเกี่ยวกับวิธีหลีกเลี่ยงปัญหา

เมื่อเล่นเกมบน Windows ฉันอาจต้องการ ALT-TAB เกมบางเกมไม่มีปัญหาอื่น ๆ ไม่ใช่เรื่องง่าย: พวกเขาอาจใช้เวลา AGES เพื่อสลับออกและกลับมาบางเกมมีแนวโน้มที่จะกระแทกหรือพฤติกรรมแปลก ๆ เช่นการบิดเบือนกราฟิกหรือเสียงพูดติดอ่าง

ฉันแค่สงสัยว่าอะไรทำให้เกิดพฤติกรรมนี้ นี่เป็น DirectX หรือ OpenGL มากกว่านี้ใช่ไหม มันเกิดจากเกมที่ 'ฉลาด' และแคช / เช็ดแคชทุกครั้งที่เปลี่ยนการตั้งค่าหน้าจอหรือไม่? (ฉันคิดว่าพวกเขาจะได้รับสัญญาณบางอย่างเมื่อฉัน ALT-TAB?)

ฉันไม่มีปัญหาใด ๆ ของฉันเอง แต่ฉันอยากรู้ว่าต้องหลีกเลี่ยงอะไรและเคล็ดลับ 'ฉลาด' ใดที่อาจทำให้เกิดประสบการณ์ลูกค้าที่น่ากลัวประเภทนี้


1
เป็นคำถามที่ดีมาก! หวังว่าเราจะได้คำตอบที่ลึกซึ้งเช่นเคย!

คำตอบ:


17

ในบางสถานการณ์ ALT-TAB จะทำให้อุปกรณ์ DirectX หายไป เมื่ออุปกรณ์สูญเสียทรัพยากร GPU ทั้งหมด (จุดยอด, พื้นผิว, เงาและอื่น ๆ ) จะต้องถือว่าไม่ถูกต้องและไม่สามารถใช้งานได้อีก MSDN อ้างอิงที่นี่

ทรัพยากรที่สูญหายเหล่านี้จะต้องได้รับการปล่อยตัวออกมาและสร้างขึ้นใหม่เมื่ออุปกรณ์ได้รับการกู้คืน ในกรณีที่เกมส่วนใหญ่กู้คืนทรัพยากรเหล่านี้ต้องการข้อมูลจำนวนมากที่จะโหลดจากดิสก์อีกครั้ง - มักจะเป็นขั้นตอนการโหลดเช่นเดียวกับที่ทำเมื่อเริ่มเกม / ระดับ

สิ่งที่สามารถทำได้เพื่อหลีกเลี่ยงปัญหานี้?

  • คุณสามารถเก็บแคชข้อมูลของคุณไว้ในหน่วยความจำได้ดังนั้นการถ่ายโอนกลับไปยัง GPU จะเร็วกว่าการโหลดจาก HD ฉันเชื่อว่ามีวิธีทำให้ DirectX ทำสิ่งนี้โดยอัตโนมัติ
  • ใช้ DirectX เวอร์ชันใหม่ คำพูดนี้ ( ต้นฉบับ ) มาจาก MSDN บน DirectX 9Ex:

อุปกรณ์หายตอนนี้ภายใต้สองสถานการณ์เท่านั้น เมื่อฮาร์ดแวร์ถูกรีเซ็ตเนื่องจากหยุดทำงานและเมื่อไดรเวอร์อุปกรณ์หยุดทำงาน เมื่อฮาร์ดแวร์หยุดทำงานอุปกรณ์สามารถรีเซ็ตได้โดยโทร ResetEx หากฮาร์ดแวร์ค้างหน่วยความจำพื้นผิวจะหายไป


คุณสามารถให้ลิงค์สำหรับคำพูดนั้นได้หรือไม่? เราพบว่าอุปกรณ์ดังกล่าวหายไปเมื่อคุณล็อกเดสก์ท็อปด้วย
Kylotan

ฉันได้เพิ่มลิงค์สำหรับคำพูด
CiscoIPPhone

1
การเปลี่ยนแปลงในพฤติกรรม DirectX เป็นผลข้างเคียงของการเปลี่ยนแปลงในรุ่นไดรเวอร์ นั่นคือมันต้องการ WDDM ดังนั้นจึงเป็น Vista / Win7 เท่านั้น
Bahbar

7

ใน Direct3D อุปกรณ์อาจสูญหายได้เมื่อคุณ ALT-TAB ออกจากหน้าต่างเต็มหน้าจอ หากสิ่งนั้นเกิดขึ้นคุณต้องปล่อยและเรียกคืนทรัพยากรและรีเซ็ตอุปกรณ์ สิ่งนี้อาจทำได้ยากขึ้นอยู่กับความซับซ้อนของเกมหรือความเกียจคร้านของผู้พัฒนา (hi Valve!) ฉันไม่คิดว่า OpenGL ประสบปัญหาเดียวกันเนื่องจากผู้ขับขี่รับผิดชอบในการรักษาบริบทของ OpenGL ให้คุณ แต่ฉันไม่แน่ใจ

มีคำถามเกี่ยวกับ StackOverflow เกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดสำหรับการสนับสนุน ALT-TAB ในแอพ DirectXซึ่งมีลิงก์ที่มีประโยชน์จาก MSDN และแหล่งข้อมูลอื่น ๆ


3
คุณถูกต้องเหตุผลที่ OpenGL ไม่ได้รับผลกระทบ (มากไปกว่านี้) เนื่องจากไดรเวอร์เก็บสำเนาทุกอย่างไว้สำหรับคุณใน Windows สิ่งนี้อาจทำให้แอป GL ใช้ RAM มากกว่าแอพ DX แต่แอพ DX ที่ทำงานได้ดีควรทำการแคชทุกอย่างในกรณีที่จำเป็นต้องกู้คืนข้อมูลบริบทของมันต่อไป
Branan

นั่นเป็นเรื่องจริง (เกี่ยวกับ OpenGL)
topright

0

อาจเป็นจำนวนหน่วยความจำที่ว่างได้ฟรี ถ้ามันต่ำเกินไปเมื่อเกมของคุณทำงาน Windows จะซ่อนบริการส่วนใหญ่ไว้ในพื้นที่ swap (เช่นใช้ข้อมูลส่วนใหญ่ที่โหลดใน RAM และวางไว้ในพื้นที่พิเศษของฮาร์ดไดรฟ์ของคุณแทน) เพื่อให้เกมของคุณ เพื่อให้มีเนื้อที่ RAM พร้อมใช้งานมากที่สุด

จากนั้นเมื่อคุณ alt + แท็บจากเกมไปยัง windows จำเป็นต้องใช้บริการเหล่านี้เพื่อโหลดใน RAM เพื่อให้ทำงานได้ดังนั้นจะใช้ข้อมูลเกมของคุณจาก RAM เก็บไว้ใน swap และดึงข้อมูล windows จาก สลับไปที่ RAM

และอย่างที่คุณทราบการเขียนลงฮาร์ดไดรฟ์อาจใช้เวลานานกว่าเมื่อเปรียบเทียบกับแรม สิ่งเดียวกันนี้เกิดขึ้นเมื่อคุณเลิกเล่นเกมหนัก ๆ นั่นเป็นเหตุผลที่มีพื้นที่แรมเพียงพอสำหรับทั้งเกมและหน้าต่างจะสะดวกสบายยิ่งขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.