Tôi có một bộ sưu tập các đối tượng 2d với độ trong suốt. Mỗi đối tượng có một giá trị độ sâu để xác định thứ tự vẽ và vật liệu. Tôi đang cố gắng xử lý chúng theo cách tối ưu để giảm thiểu các cuộc gọi rút thăm. Giả sử rằng các đối tượng có cùng vật liệu có thể được gộp lại với nhau trong một lệnh rút thăm duy nhất.
Một cách sắp xếp ngây thơ là sắp xếp tất cả các đối tượng theo độ sâu trước, sau đó sắp xếp theo vật liệu nếu các giá trị độ sâu là như nhau. Hãy xem xét tập hợp các đối tượng sau với 'z' đại diện cho độ sâu và màu sắc của đối tượng thể hiện vật liệu của nó. Trong tập hợp bên phải, các đối tượng màu xanh đã được dịch dọc theo x sao cho chúng không trùng với màu đỏ.
Sắp xếp theo [độ sâu, vật liệu] dẫn đến danh sách đối tượng được sắp xếp: {Red, Blue, Red, Blue} cho cả bộ đối tượng bên trái và bên phải. Hoặc trái hoặc phải sẽ dẫn đến 4 cuộc gọi rút thăm (các đối tượng của cùng một vật liệu cần được liền kề trong danh sách được sắp xếp để được bó)
Tuy nhiên, nếu bạn nhìn vào các đối tượng bên phải, rõ ràng bạn có thể sử dụng hai cuộc gọi rút thăm vì không có sự trùng lặp. Thứ tự dựa trên độ sâu không thành vấn đề nếu các đối tượng màu xanh và đỏ không trùng nhau giữa phạm vi độ sâu của một lô nhất định. Điều này cũng đúng nếu bạn có một đối tượng màu đỏ với (z> 4) hoặc (z <2) ở bất cứ đâu trong tập hợp bên phải.
Vì vậy, giả sử mỗi đối tượng có một vật liệu có thể so sánh, giá trị độ sâu và hộp giới hạn (giả sử mỗi đối tượng là một tứ giác được căn chỉnh theo trục), cách hiệu quả để có được danh sách các đối tượng vẽ với cả hai thứ tự chính xác cho sự minh bạch và các nhóm tối ưu dựa trên vật liệu?
Ngoài ra, chỉ cần lưu ý, tôi không có hỗ trợ ngay lập tức vì vậy đó không phải là một lựa chọn ở đây.