Ví dụ, nếu tôi sử dụng vertex như sau:GLSL có thực sự thực hiện các phép tính không cần thiết với các giá trị thống nhất (không phải trên mỗi đỉnh) không?
#version 400 core
uniform mat4 projM;
uniform mat4 viewM;
uniform mat4 modelM;
in vec4 in_Position;
out vec4 pass_position_model;
void main(void) {
gl_Position = projM * viewM * modelM * in_Position;
pass_position_model = modelM * in_Position;
}
Nó sẽ làm projM * viewM * modelM
nhân ma trận cho mỗi đỉnh, hoặc nó nó đủ thông minh để tính toán, nếu một lần và không tính toán lại cho đến khi biến đồng đều được thay đổi? Nếu nó không phải là "đủ thông minh", thì có cách nào để tối ưu hóa nó ngoài việc tính toán tất cả các giá trị phụ thuộc vào thống nhất trên CPU và gửi chúng dưới dạng biến thống nhất cho GPU không?
Ngoài ra tôi quan tâm đến các giải pháp có thể được chuyển sang OpenGL ES 2.0 sau mà không gặp sự cố.
Awsome. Tôi sẽ phải ghi nhớ điều đó. –
+1 cho nỗ lực định hình (và sử dụng 2 card đồ họa tôi có). – GraphicsMuncher
+1. Nhưng làm cách nào bạn đánh giá kết quả? Có vẻ như sự khác biệt gần như không đáng kể. Tôi đề nghị chạy cả hai mô phỏng trong 60 giây và xem xét chỉ đọc FPS tốt nhất (vì nó thể hiện hiệu năng tốt nhất mà CPU/GPU có thể làm). – Calmarius