Như những người khác đã đề cập, HĐH của bạn (phối hợp với người quản lý tài nguyên trình điều khiển) nên phát hành tài nguyên. Đó là những gì OSes dành cho. Cần lưu ý rằng điều này không liên quan gì đến OpenGL, nhưng nó là một phần của điều lệ của các hệ điều hành tốt và các trình điều khiển liên quan của họ. Hệ điều hành có để xử lý tất cả các tài nguyên hệ thống tất cả. OpenGL chỉ là một tập hợp con của chúng, và chúng không khác gì, nói một tập tin xử lý. Bây giờ để có được cụ thể hơn, bạn nên xác định hệ điều hành mà bạn quan tâm.
BTW, Đây là nơi tôi ngoại lệ với câu trả lời của ChrisF. Nó không nên được lên đến người lái xe để quyết định nó cần phải làm sạch. Các mô hình trình điều khiển OS sẽ có giao diện rõ ràng giữa trình điều khiển OpenGL của người dùng (không nên phân bổ tài nguyên gfx thực sự, vì nó được chia sẻ trong máy), hệ điều hành (cung cấp tương đương với các cuộc gọi hệ thống để cấp phát tài nguyên) và Trình điều khiển chế độ lõi (chỉ đơn thuần là ở đó để thực hiện các lệnh hệ điều hành theo cách tương thích với gpu). Đây là ít nhất là trường hợp với các mô hình WIN2K và WDDM. Vì vậy ... nếu quá trình của bạn bị treo hoặc kết thúc, trong các mô hình đó, đó là trách nhiệm của hệ điều hành để gọi trình điều khiển chế độ hạt nhân giải phóng tất cả các tài nguyên được liên kết với quy trình.
Bây giờ, cho dù bạn nên hay không thực sự là một cái gì đó giống như yêu cầu tab hoặc không gian trong mã nguồn. Những người khác nhau có niềm tin khác nhau ở đây. "Hệ điều hành sẽ làm điều đó, bỏ ngay lập tức là trải nghiệm người dùng cuối" vs "Tôi muốn biết liệu tôi có bị rò rỉ bộ nhớ hay không vì tôi có chương trình dài hạn, tôi thực sự không muốn nó gặp lỗi OOM Cách tốt nhất để làm điều đó là không bị rò rỉ trong suốt "là hai dòng suy nghĩ chính mà tôi biết.
Phụ thuộc vào định nghĩa của bạn về "phải". Bạn không "phải" làm bất cứ điều gì. Nếu bạn muốn "đúng", có; bạn cần luôn giải phóng tài nguyên của mình khi bạn hoàn tất. – GManNickG
Tôi muốn biết liệu nó có tự động dọn dẹp không, * ngay * sau khi Chương trình đóng, hoặc nếu bộ nhớ GPU bị mất cho đến lần khởi động tiếp theo. Tôi hy vọng một người nào đó có thể chỉ cho tôi về đặc điểm kỹ thuật OpenGL và nó đã được xác định ở đó (mặc dù công cụ tìm kiếm yêu thích của tôi đã không nhổ bất cứ điều gì hữu ích với tôi). – drahnr
Cả hai! Thực sự, làm sạch sau khi bản thân bạn, ngay cả khi hệ điều hành làm điều đó cho bạn. Bạn không cần phải bao giờ 'xóa' bất kỳ bộ nhớ' mới' nào, hệ điều hành sẽ chỉ giải phóng nó khi chương trình kết thúc, nhưng vẫn không phải là điều tôi muốn đề nghị. –