Tôi đang tìm kiếm một cách thanh lịch để xử lý các bố cục đầu vào trong mã directx11 của mình.
Vấn đề tôi có là tôi có một lớp Hiệu ứng và một lớp Element. Lớp hiệu ứng đóng gói các shader và các cài đặt tương tự, và lớp Element chứa thứ gì đó có thể được vẽ (mô hình 3d, lanscape, v.v.)
Mã bản vẽ của tôi thiết lập các shader thiết bị, v.v ... bằng cách sử dụng hiệu ứng được chỉ định và sau đó gọi hàm vẽ của Element để vẽ hình học thực tế có trong nó.
Vấn đề là ở đây - tôi cần tạo D3D11InputLayout ở đâu đó. Điều này thực sự thuộc về lớp Element vì nó không phải là phần còn lại của hệ thống, làm thế nào phần tử đó chọn để thể hiện bố cục đỉnh của nó. Nhưng để tạo đối tượng, API yêu cầu mã byte của trình tạo bóng đỉnh cho trình tạo bóng đỉnh sẽ được sử dụng để vẽ đối tượng. Trong directx9 thật dễ dàng, không có sự phụ thuộc nên phần tử của tôi có thể chứa các cấu trúc bố cục đầu vào của riêng nó và đặt chúng mà không có hiệu ứng liên quan.
Nhưng Element không thực sự phải biết bất cứ điều gì về hiệu ứng mà nó được tạo ra, đó chỉ là cài đặt kết xuất và Element ở đó để cung cấp hình học.
Vì vậy, tôi thực sự không biết nơi lưu trữ và cách chọn InputLayout cho mỗi cuộc gọi rút thăm. Ý tôi là, tôi đã làm một cái gì đó hoạt động nhưng nó có vẻ rất xấu.
Điều này làm cho tôi biết rằng tôi đã bỏ lỡ điều gì đó rõ ràng hoặc nếu không thì thiết kế của tôi có tất cả các cài đặt kết xuất trong Hiệu ứng, Hình học trong một Thành phần và bên thứ 3 rút ra tất cả chỉ là thiếu sót.
Chỉ tự hỏi làm thế nào bất cứ ai khác xử lý bố trí đầu vào của họ trong directx11 một cách thanh lịch?