Mức thấp nhất có ý nghĩa theo quan điểm của tôi là một cái gì đó nói về các tài nguyên liên quan đến kết xuất - vb / ib, kết xuất bề mặt, kết cấu, đổ bóng, khối trạng thái, v.v.
Vấn đề ở đây là một số trong số này cần phải ở các định dạng khác nhau, tùy thuộc vào API - đó là nơi nó có một chút khó khăn. Cách dễ nhất là xử lý trước các tài nguyên tĩnh cho API tương ứng. Đối với những người năng động, chỉ sử dụng các trình tạo bóng để tạo ra chúng - điều đó khiến cho việc giữ nguyên các định dạng gốc khá đơn giản.
Tất cả những gì bạn làm ở cấp độ cao hơn là thiết lập các đường ống với các tài nguyên được đính kèm và đưa chúng cho GPU. Bạn sẽ thấy rằng không phải mọi thứ đều có thể được trừu tượng hóa theo cách đó, đặc biệt nếu bạn tận dụng các thủ thuật dành riêng cho phần cứng. Nhưng đó là một khởi đầu tốt.
(Sidenote: nếu bạn coi các thủ thuật dành riêng cho nền tảng là một loại tài nguyên đặc biệt, bạn có thể đẩy toàn bộ khái niệm này đi khá xa.)
Vì vậy, theo một cách nào đó, bạn sẽ tạo ra hai điều: Trình quản lý tài nguyên phần cứng, cộng với bộ công cụ để thiết lập DAG của các tài nguyên này.