Tốc độ glUseProgram() nhanh như thế nào? Có điều gì tốt hơn (nhanh hơn) ?:Hành vi của đồng phục sau glUseProgram() và tốc độ
Dưới đây là suy nghĩ của tôi:
- Sử dụng 1 chương trình shader phổ quát, nhưng với nhiều thiết lập đầu vào và các thuộc tính (cài đặt cho mỗi lớp đồ họa)
- Sử dụng hơn 1 trình đổ bóng cho mỗi lớp đồ họa
Trạng thái đồng phục sau khi thay đổi chương trình đổ bóng là gì? Chúng có lưu giá trị (ví dụ, giá trị ma trận) không?
Dưới đây là những gì tôi xem xét những lợi ích của # 1 là:
- Không sử dụng glUseProgram()
Và những lợi ích của # 2:
- Không thay đổi ma trận (ví dụ: nếu lớp
Menu
và lớpScene3D
có ma trận Chiếu khác nhau)
"Điều gì trong hai tùy chọn tốt hơn phần lớn phụ thuộc vào những gì những người làm bóng" - Nhiệm vụ là đơn giản - kết xuất với texturing, mà không có bất kỳ hiệu ứng (chỉ một số phải có hiệu ứng đổ bóng). –
Nếu một số là rất đơn giản và một số có hiệu lực, sau đó tôi sẽ có một shader đơn giản chỉ với texturing (giả sử openg gl 2.x hoặc cao hơn) và một cho mỗi lớp có hiệu lực. Nhưng thật khó để đánh giá mà không biết nhiều hơn. Nó có lẽ sẽ không quan trọng nhiều trong bức tranh lớn. Trừ khi bạn có vấn đề về hiệu suất và biết đó là vì những thay đổi của tiểu bang, chỉ cần làm những gì thuận tiện hơn. – haffax
Đồng phục có thể được chia sẻ giữa các chương trình bằng cách sử dụng đối tượng đệm đồng nhất (xem ví dụ. [Đồng phục được chia sẻ] (http://arcsynthesis.org/gltut/Positioning/Tut07%20Shared%20Uniforms.html)) – stativ