2010-11-11 41 views
6

Rất nhiều trang/bài viết nói 'batch! hàng loạt! hàng loạt! '. Ai đó có thể giải thích những gì 'batching' đại diện cho đối với shaders?Ghép đồ họa 3D

Cụ thể, thực hiện

  1. thay đổi kết cấu
  2. thay đổi biến shader tùy ý

có nghĩa là một cái gì đó không thể 'trộn'?

(Xin lỗi nếu điều này là một câu hỏi chậm phát triển: D)

Trả lời

8

Cách đơn giản nhất để tóm tắt nó là để cố gắng làm càng ít cuộc gọi API như bạn có thể để vẽ những gì bạn cần để vẽ. Sử dụng các mảng đỉnh hoặc VBO (thậm chí không bắt buộc trong các API hiện đại), các kết cấu inlases và tránh sự cần thiết phải thay đổi trạng thái tất cả đóng góp cho điều đó. Nó thực sự tuyệt vời có bao nhiêu hình tam giác mà GPU hiện đại có thể vẽ trong thời gian bạn quay lại và thiết lập cuộc gọi vẽ tiếp theo.

+0

Và áp dụng điều đó cho hai điểm của bạn, thay đổi mọi thứ phủ nhận việc thực hiện theo đợt. Thay đổi kết cấu thường không quá tệ, nếu cả hai kết cấu như trong VRAM, nhưng việc thay đổi các biến đổ bóng liên tục có thể bị chậm. – ssube

+0

Cảm ơn. Làm thế nào để công cụ trò chơi hiện đại xử lý ma trận chuyển đổi khi batching mặc dù (mà thay đổi cho mỗi đối tượng)? – jameszhao00

+0

ma trận chuyển đổi sẽ được đặt làm hằng số shader khi cần thiết. Đó không phải là một vấn đề lớn bởi vì rất nhiều cảnh thường là thế giới. Nó tĩnh và không cần chuyển đổi. Nếu có: Hãy chuyển đổi dữ liệu tại thời gian tải, trước khi bạn tải nó vào bộ đệm đỉnh. –

3