Làm cách nào tôi có thể biết mình đang sử dụng bao nhiêu bộ nhớ card màn hình?


15

Tôi muốn xác định theo chương trình trong thời gian chạy bao nhiêu bộ nhớ thẻ video đang được chương trình của tôi sử dụng. Cụ thể tôi đang tự hỏi về cách thực hiện trên máy Windows bằng OpenGL, nhưng tôi cũng quan tâm đến các cách để làm điều đó trên các nền tảng khác.

Tôi biết có những tiện ích ngoài kia sẽ cho tôi thấy việc sử dụng bộ nhớ khi chương trình của tôi đang chạy, nhưng tôi muốn có thể truy vấn thông tin đó từ mã của mình.


PS Tôi đã trả lời câu hỏi của bạn, nhưng điều này sẽ phù hợp hơn với stackoverflow.com vì đây chỉ là một câu hỏi lập trình chung. Nếu câu trả lời của tôi không đủ kỹ lưỡng, bạn có thể đăng lại nó ở đó và xem phản hồi mà họ đưa ra.
Ricket

Tôi cũng đang sử dụng stackoverflow, nhưng tôi vẫn đang tìm hiểu sự pha trộn của những câu hỏi có giá trị ở đây.
Hitesh

3
Câu hỏi này có vẻ hoàn toàn tốt ở đây. Rốt cuộc, anh ta có lẽ đã nhận được sự cần thiết. Xem điều này: meta.gamedev.stackexchange.com/questions/3/ từ
Tetrad

Câu trả lời:


14

Bạn có thể tìm bộ nhớ video của thẻ Nvidia bằng tiện ích mở rộng NVX_gpu_memory_info hoặc thẻ ATI bằng ATI_meminfo . Đây là một đoạn mã tôi tìm thấy có thể giúp bạn bắt đầu.


Tuy nhiên, Paul Nellow tại flipcode tự hỏi tại sao người ta lại muốn tìm bộ nhớ video khả dụng, nói :

Lý do rất khó (và đôi khi không thể) để xác định dung lượng bộ nhớ video rất giống với lý do tại sao OpenGL sẽ không cho phép bạn khóa bộ đệm khung và truy cập trực tiếp.

Và tiếp tục giải thích, về bản chất, một "lượng bộ nhớ video" có thể không thực sự có ý nghĩa gì . Tôi đồng tình với anh ta về lý do, ví dụ, dung lượng bộ nhớ "miễn phí" trong máy Windows Vista / 7 là không liên quan; hy vọng không có bộ nhớ trống, vì bộ nhớ trống bị lãng phí bộ nhớ. Nhưng luôn có một số vùng bộ nhớ dành riêng cho bộ nhớ cache bị xóa bởi Windows, nếu một ứng dụng cần chúng.


Một số tài nguyên tuyệt vời. Tôi sẽ có cơ hội dùng thử trong vài ngày.
Hitesh

+1, đoạn trích rất hay. Tuy nhiên, tôi không hoàn toàn đồng ý về việc không có ý nghĩa gì cả - tốt hơn hết là kiểm tra dung lượng bộ nhớ hơn là để cho chương trình quang phổ chương trình của bạn thất bại.
Kornel Kisielewicz

Chà, nhưng tôi nghĩ vấn đề không nhất thiết là bạn không nên kiểm tra dung lượng bộ nhớ, mà là dung lượng bộ nhớ không phải là một chỉ số rõ ràng về bất cứ điều gì. Khi thẻ hết bộ nhớ, điều đó có nghĩa là nó sẽ bị lỗi hoặc có thể có nghĩa là dữ liệu kết cấu của bạn sẽ được tự động hoán đổi vào và ra khi cần thiết. Bộ nhớ 0 có thể không thực sự có nghĩa là lỗi hết bộ nhớ.
Ricket

1
Cá nhân tôi đang dự định sử dụng điều này như một hướng dẫn đơn giản để theo dõi rò rỉ và xem khả năng tương thích phần cứng của tôi. Sử dụng "20mb"? Vâng, có lẽ sẽ chạy trên bất cứ thứ gì trên thị trường ngày hôm nay. Sử dụng "500mb" trên một trò chơi đơn giản với nửa tá kết cấu được phân bổ động với nhiều tiếng vang? Rất tiếc một cái gì đó có lẽ đã đi sai với bộ sưu tập rác của tôi.
ZorbaTHut

1
Thật không may, thông số GL nói rằng khi trình điều khiển trả về GL_OUT_OF_MEMORY thì bây giờ nó không xác định được nên khi bạn thoát khỏi bộ nhớ, về cơ bản, bạn không thể chấp nhận được trò chơi như vậy đối với Photoshop, điều đó không thể chấp nhận được.
gman
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.