Tôi hiện đang làm việc với việc nâng cấp và tái cấu trúc công cụ hiển thị OpenGL. Động cơ được sử dụng để hình dung các cảnh lớn của dữ liệu kiến trúc (các tòa nhà có nội thất), và số lượng vật thể có thể trở nên khá lớn. Như trường hợp với bất kỳ tòa nhà nào, có rất nhiều vật thể bị tắc trong các bức tường, và bạn tự nhiên chỉ thấy các vật thể ở cùng phòng với bạn, hoặc bên ngoài nếu bạn ở bên ngoài. Điều này để lại một số lượng lớn các đối tượng mà nên được occluded thông qua culling tắc và culling culling.Nghệ thuật chụm và Batching hiện đại trong việc hiển thị
Đồng thời có rất nhiều hình lặp lại lặp lại có thể được nhóm trong các biểu thức kết xuất và cũng có rất nhiều đối tượng có thể được hiển thị với hiển thị được lập trình.
Cách tôi nhìn thấy, có thể khó kết hợp việc kết xuất và chọn lọc theo cách tối ưu. Nếu bạn bó quá nhiều đối tượng trong cùng một VBO thì sẽ rất khó để loại bỏ các đối tượng trên CPU để bỏ qua việc hiển thị lô đó. Đồng thời nếu bạn bỏ qua việc hủy bỏ cpu trên cpu, rất nhiều đối tượng sẽ được xử lý bởi GPU trong khi chúng không hiển thị. Nếu bạn bỏ qua batching copletely để dễ dàng cull trên CPU, sẽ có một số lượng lớn các cuộc gọi render không mong muốn.
Tôi đã thực hiện một số nghiên cứu về kỹ thuật và lý thuyết hiện có về cách giải quyết các vấn đề này trong đồ họa hiện đại, nhưng tôi không thể tìm ra giải pháp cụ thể nào. Một ý tưởng mà một đồng nghiệp và tôi nghĩ ra là hạn chế các lô đối tượng tương đối gần nhau, ví dụ như tất cả các ghế trong phòng hoặc trong bán kính của những người gặp gỡ. Điều này có thể được đơn giản hóa và tối ưu hóa thông qua việc sử dụng cây oct.
Có ai có bất kỳ gợi ý nào về kỹ thuật được sử dụng để quản lý cảnh, chọn lọc, phân phối, v.v ... trong các công cụ đồ họa hiện đại không?
Hãy để tôi bắt đầu bằng cách nói rằng tôi không có kiến thức về bất kỳ công cụ đồ họa hiện đại nào. Nhưng điều này nghe có vẻ giống như một vấn đề mà không có một giải pháp duy nhất, thay vào đó nó có thể được giải quyết bằng cách vá và trường hợp chuyển đổi nhiều cách tiếp cận với nhau để cung cấp chất lượng/hiệu suất tốt nhất cho kịch bản nhất định. Đơn giản vì chất lượng và hiệu suất luôn luôn loại trừ lẫn nhau, khi bị áp lực. Tôi thường giải quyết các cuộc gọi vẽ của tôi bằng cách trộn tất cả mọi thứ (!) Cùng nhau trong các khối thân thiện thất vọng (cho bạn: phòng), bằng cách sử dụng mảng kết cấu và whatnot có thể rất hữu ích trong môi trường kiến trúc tĩnh. –