Điều gì có thể khiến ALT-TAB trở nên 'khó chịu' / chậm / rối mắt?


25

Đây là nhiều hơn một câu hỏi kết thúc mở, nhưng tôi hy vọng sẽ có được một cái nhìn sâu sắc tốt về cách tránh vấn đề.

Khi chơi Games trên Windows, tôi có thể muốn ALT-TAB ra khỏi nó. Một số trò chơi không có vấn đề gì, những trò chơi khác không dễ dàng như vậy: Chúng có thể mất AGES để chuyển đổi và quay lại. Một số trò chơi thậm chí dễ bị hỏng hoặc có hành vi kỳ lạ như méo hình hoặc âm thanh nói lắp.

Tôi chỉ tự hỏi điều gì gây ra hành vi này? Đây có phải là một DirectX hay một thứ OpenGL không? Có phải do Trò chơi là 'thông minh' và lưu trữ / xóa bộ nhớ cache bất cứ khi nào cài đặt màn hình thay đổi? (Tôi cho rằng họ nhận được một số tín hiệu khi tôi ALT-TAB?)

Tôi không có bất kỳ vấn đề nào của riêng mình, nhưng tôi muốn biết những gì nên tránh và mẹo 'thông minh' nào có thể gây ra loại trải nghiệm khách hàng khủng khiếp này?


1
Câu hỏi tuyệt vời! Hy vọng rằng chúng tôi nhận được một số câu trả lời sâu sắc, như thường lệ!

Câu trả lời:


17

Trong một số trường hợp ALT-TAB sẽ khiến thiết bị DirectX bị mất. Khi thiết bị bị mất tất cả tài nguyên GPU (đỉnh, kết cấu, đổ bóng, v.v.) phải được coi là không hợp lệ và không thể sử dụng lại. Tham khảo MSDN tại đây .

Những tài nguyên bị mất này phải được giải phóng và sau đó được tạo lại khi thiết bị được khôi phục. Trong trường hợp hầu hết các trò chơi khôi phục các tài nguyên này yêu cầu rất nhiều dữ liệu được tải lại từ đĩa - thường là quy trình tải giống như được thực hiện khi bắt đầu trò chơi / cấp.

Có thể làm gì để tránh điều này?

  • Bạn có thể giữ bộ nhớ cache của dữ liệu trong ram để chuyển dữ liệu trở lại GPU sẽ nhanh hơn tải lại từ HD. Tôi tin rằng có một cách để làm DirectX tự động làm điều này.
  • Sử dụng phiên bản DirectX mới. Trích dẫn này ( nguồn ) là từ MSDN trên DirectX 9Ex:

Thiết bị bây giờ chỉ bị mất trong hai trường hợp; khi phần cứng được đặt lại vì nó bị treo và khi trình điều khiển thiết bị dừng lại. Khi phần cứng bị treo, thiết bị có thể được đặt lại bằng cách gọi ResetEx. Nếu phần cứng bị treo, bộ nhớ kết cấu bị mất.


Bạn có thể cung cấp một liên kết cho trích dẫn đó? Chúng tôi thấy rằng thiết bị cũng bị mất khi bạn khóa máy tính để bàn.
Kylotan

Tôi đã thêm liên kết cho báo giá.
CiscoIPPhone

1
thay đổi trong hành vi DirectX là tác dụng phụ của thay đổi trong mô hình trình điều khiển. Đó là, nó yêu cầu WDDM. VÌ VẬY, chỉ có Vista / Win7.
Bahbar

7

Trong Direct3D, một thiết bị có thể bị mất khi bạn ALT-TAB ra khỏi cửa sổ toàn màn hình. Nếu điều đó xảy ra, bạn phải giải phóng và khôi phục tài nguyên và đặt lại thiết bị. Điều này có thể khó thực hiện đúng tùy thuộc vào độ phức tạp của trò chơi hoặc sự lười biếng của các nhà phát triển (hi Valve!). Tôi không nghĩ OpenGL gặp phải vấn đề tương tự vì trình điều khiển chịu trách nhiệm giữ bối cảnh OpenGL cho bạn, nhưng tôi không chắc chắn.

Có một câu hỏi trên StackOverflow về các thực tiễn tốt nhất để hỗ trợ ALT-TAB trong ứng dụng DirectX bao gồm các liên kết hữu ích từ MSDN và các nguồn khác.


3
Bạn đã đúng, lý do OpenGL không chịu (nhiều) vì điều này là do trình điều khiển giữ một bản sao của mọi thứ cho bạn trên Windows. Điều này có thể khiến các ứng dụng GL sử dụng nhiều RAM hơn ứng dụng DX, nhưng một ứng dụng DX hoạt động tốt sẽ lưu vào bộ nhớ cache mọi thứ trong trường hợp nó cần khôi phục dữ liệu ngữ cảnh của nó, do đó, trách nhiệm của bộ nhớ đệm là gì.
Branan

Đó là sự thật (về OpenGL).
topright

0

Nó có thể là số lượng ram miễn phí có sẵn. Nếu quá thấp, khi trò chơi của bạn chạy, Windows sẽ ẩn hầu hết các dịch vụ của nó vào khu vực trao đổi (nghĩa là phải lấy phần lớn dữ liệu được tải trong RAM và đặt nó vào một khu vực đặc biệt trong ổ cứng của bạn) để chơi trò chơi của bạn để có không gian RAM có sẵn càng tốt.

Sau đó, khi bạn alt + tab từ trò chơi đến cửa sổ, nó cần các dịch vụ này được nạp vào RAM để hoạt động, do đó, nó sẽ lấy dữ liệu trò chơi của bạn từ RAM, lưu trữ trong trao đổi và lấy dữ liệu của windows từ trao đổi với RAM.

Và như bạn đã biết, ghi vào ổ cứng có thể mất AGES so với RAM. Điều tương tự cũng thực sự xảy ra khi bạn bỏ một trò chơi nặng. Đó là lý do tại sao có đủ dung lượng RAM cho cả trò chơi và cửa sổ có thể thực sự thoải mái hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.