2011-10-04 34 views
8

Làm thế nào để nhận được tổng bộ nhớ trong byte được sử dụng bởi OpenGL trong C++?Làm thế nào để nhận được tổng số bộ nhớ trong byte được sử dụng bởi OpenGL trong C++?

Tôi đang xây dựng ứng dụng OpenGL và tổng dung lượng được sử dụng dường như đang tăng lên, tôi có thể nhận thông tin về tổng bộ nhớ được sử dụng bởi các biến số & đối tượng được tạo bởi chính tôi nhưng không thể đảm bảo các biến của nó & các đối tượng & họa tiết, v.v. Vậy có thể lấy tổng bộ nhớ bằng byte được OpenGL sử dụng trong C++ không?

Trả lời

7

Nói chung, bạn không thích. OpenGL cuối cùng là một trừu tượng phần cứng. Và OpenGL chỉ đơn giản là không cung cấp một cách để có được loại thông tin đó.

Có các tiện ích dành riêng cho nhà cung cấp sẽ cung cấp cho bạn các cách để hỏi, mặc dù những gì bạn nhận được tùy thuộc vào kiến ​​trúc. Phần cứng AMD cung cấp ATI_meminfo extension. Nó phá vỡ bộ nhớ thành các loại đối tượng: các đối tượng đệm, kết cấu và các biểu thức kết xuất.

NVIDIA cung cấp tiện ích thử nghiệm NVX_gpu_memory_info. Không có thông tin nào trong sổ đăng ký về cách sử dụng nó, vì vậy tôi không thể liên kết bạn với bất kỳ thứ gì.

Trong mọi trường hợp, cách hiệu quả nhất để biết GPU đang sử dụng là chỉ theo dõi chính nó. Luôn sử dụng internal image formats with sizes; điều này có nghĩa là bạn có thể tính toán một ước tính khá tốt về số lượng bộ nhớ mà một kết cấu chiếm. Cũng vậy đối với các đối tượng đệm và vv.

Bạn sẽ không nhận được các con số chính xác, vì phần đệm, căn chỉnh và các thứ tương tự có thể làm bạn bối rối. Nhưng bạn sẽ nhận được một cái gì đó khá tốt.

+0

Tôi nghĩ rằng cũng có mipmaps kết cấu sẽ được tính đến thống kê sử dụng bộ nhớ. – Luca

+0

+1 Câu trả lời hay. Tôi thực sự đã không trả lời câu hỏi này bởi vì tôi có ấn tượng rằng OP muốn biết bộ nhớ CPU được sử dụng bởi việc thực hiện OpenGL (trình điều khiển). Nếu không (nếu nói đến bộ nhớ GPU), tôi không biết làm thế nào anh ta nên thấy rằng "tổng bộ nhớ được sử dụng dường như đang tăng lên". –

+0

Tôi đang sử dụng mipmaps và điều này sẽ mất bộ nhớ nhiều hơn 50% so với sử dụng kết cấu bitmap. nhưng GL dường như sử dụng cả RAM và Video RAM – jondinham

Các vấn đề liên quan