Về cơ bản nó không thành vấn đề.
#define
sử dụng dán mã thông báo để chèn giá trị được chỉ định vào mã shader bất cứ nơi nào nó xảy ra; thay vào đó, shader sẽ nhìn thấy mã thông báo như thể bạn đơn giản mã hóa nó mỗi lần xuất hiện.
Một static const
biến trong, trong thực tế, một biến. Cụ thể, đó là một biến được khởi tạo một lần, có giá trị vẫn tồn tại giữa các lệnh gọi hàm và không thể thay đổi. Là một biến, có thể có cùng những thứ mà tất cả các biến khác có thể có: bộ lưu trữ bổ sung và bộ xác định loại ( precise
), loại phức tạp hơn (như float4
), ngữ nghĩa và bài tập đăng ký ( xem ở đây để biết tất cả mọi thứ). Tuy nhiên, đặc biệt đối với static const
các biến, hầu hết các tính năng bổ sung đó không được phép hoặc không áp dụng (đặc biệt là khi mã toàn cầu không hiển thị đối với mã ứng dụng ).
Các static const
phiên bản có thể cho phép một số tối ưu hóa trình biên dịch (những người nhỏ), đặc biệt là nếu loại biến phức tạp hơn (chẳng hạn như một float4
hoặc loại ma trận), nhưng điều đó dường như khó có thể quan trọng hơn nhiều.
Cuối cùng, chọn một trong những bạn thích phong cách.
static const
đếnconst
? Có tối ưu hóa cụ thểstatic const
mà sẽ không áp dụng choconst
? Đó là giả sử giá trị được gán chính nó chỉ là một hằng số.