Trong OpenGL, các hàm đối tượng bộ đệm ( glBufferData
, glBufferSubData
và có thể là một vài hàm khác) có một tham số usage
, được mô tả bởi tài liệu này như một gợi ý về cách sử dụng dự định, có khả năng giúp triển khai mang lại hiệu suất tốt hơn.
sử dụng
Chỉ định mô hình sử dụng dự kiến của kho lưu trữ dữ liệu. Hằng số biểu tượng phải có
GL_STREAM_DRAW
,GL_STREAM_READ
,GL_STREAM_COPY
,GL_STATIC_DRAW
,GL_STATIC_READ
,GL_STATIC_COPY
,GL_DYNAMIC_DRAW
,GL_DYNAMIC_READ
, hoặcGL_DYNAMIC_COPY
.
[...]
Việc sử dụng là một gợi ý cho việc triển khai GL về cách lưu trữ dữ liệu của đối tượng bộ đệm. Điều này cho phép thực hiện GL để đưa ra các quyết định thông minh hơn có thể ảnh hưởng đáng kể đến hiệu suất của đối tượng bộ đệm. Tuy nhiên, nó không hạn chế việc sử dụng thực tế của kho lưu trữ dữ liệu.
Wiki cũng tương tự mơ hồ:
Đây chỉ là những gợi ý. Đó là mã OpenGL hoàn toàn hợp pháp để sửa đổi bộ đệm STATIC sau khi được tạo hoặc không bao giờ sửa đổi bộ đệm STREAM.
[...]
Đây là những câu hỏi chỉ có thể được trả lời với hồ sơ cẩn thận. Và thậm chí sau đó, câu trả lời sẽ chỉ chính xác cho phiên bản trình điều khiển cụ thể đó từ nhà cung cấp phần cứng cụ thể đó.
Trong tiền phạt, tham số này có liên quan như thế nào, nếu có? Các trình điều khiển có thực sự tính đến nó không, và nếu có, theo kinh nghiệm của bạn, nó ảnh hưởng đến hiệu suất trong thực tế đến mức nào? Bạn có dữ liệu để chia sẻ?
Tôi đã viết một lớp trừu tượng API đồ họa mỏng có nghĩa là được triển khai như một trong các API hiện có và thật tuyệt vời khi chỉ cần bỏ qua tham số này hoàn toàn và ẩn nó khỏi sự trừu tượng bị lộ.