Tôi đã xây dựng một công cụ đồ họa 2D và tôi đã tạo một hệ thống trộn cho nó, vì vậy, nếu tôi có 1000 sprites với cùng một kết cấu, tôi có thể vẽ chúng bằng một cuộc gọi duy nhất openGl.Hiển thị nhiều mô hình trong OpenGL với một lệnh gọi đơn
Điều này đạt được bằng cách đặt trong một vbo đỉnh mảng duy nhất tất cả các đỉnh của tất cả các sprites với cùng một kết cấu.
Thay vì "in các đỉnh này, in các đỉnh này, in các đỉnh", tôi làm "đặt tất cả các đỉnh lên, in", chỉ để rất rõ ràng. Dễ dàng, nhưng bây giờ tôi đang cố gắng để đạt được điều tương tự trong 3D, và tôi đang gặp một vấn đề lớn.
Vấn đề là tôi đang sử dụng ma trận Chiếu xem mô hình để đặt và hiển thị mô hình của tôi, đó là cách tiếp cận chung để hiển thị mô hình trong không gian 3D.
Đối với mỗi mô hình trên màn hình, tôi cần chuyển ma trận MVP vào trình đổ bóng, để tôi có thể sử dụng nó để biến đổi từng đỉnh thành vị trí chính xác.
Nếu tôi thực hiện phép chuyển đổi bên ngoài trình đổ bóng, nó sẽ được thực thi bởi CPU, mà tôi không phải là một ý tưởng hay, vì những lý do hiển nhiên.
Nhưng vấn đề nằm ở đó. Tôi cần truyền ma trận cho trình đổ bóng, nhưng đối với mỗi mô hình, ma trận là khác nhau.
Vì vậy, tôi không thể làm tương tự như tôi đã làm với 2ngày sprites, bởi vì thay đổi một đồng phục đổ bóng đòi hỏi phải vẽ mỗi lần.
Tôi hy vọng tôi đã rõ ràng, có thể bạn có một ý tưởng hay mà tôi không có hoặc bạn đã có cùng một vấn đề. Tôi biết thực tế là có giải pháp ở đâu đó, vì trong công cụ như Unity, bạn có thể sử dụng cùng một trình đổ bóng cho nhiều mô hình và nhận được một cuộc gọi vẽ
Câu trả lời thú vị! Tôi nghĩ về việc thực hiện một cái gì đó tương tự với bản thân mình, nhưng tôi đã không thực sự biết làm thế nào, đây chính xác là những gì tôi đang tìm kiếm – Ryno