Tôi đang tìm cách sử dụng hàm làm đối số cho hàm khác trong GLSL. Trong C thường xuyên, nó có thể được mô phỏng bằng cách truyền một con trỏ hàm làm đối số hàm. Dường như các ngôn ngữ khác (như HLSL) hiện cung cấp các cách để xử lý các cấu trúc cấp cao như các hàm bậc cao hơn hoặc có thể mô phỏng chúng bằng clever use of HLSL structures. tiếc là tôi đang bị kẹt với GLSL bây giờ và tôi không thể tìm thấy bất kỳ cách nào để mô phỏng các hàm bậc cao hơn. Có thực sự không thể trong hiện tại (4.2) GLSL? Hoặc tôi thiếu một số thủ thuật thông minh?Chức năng đặt hàng thứ hai trong GLSL?
ví dụ phổ biến về những gì tôi đang cố gắng để đạt được:
int f(someType f2, int i) {
return f2(i);
}
Và bạn yêu cầu loại này (có lẽ là tốn kém) trong một bóng đổ, để đạt được ...? –
Ngoài thực tế là kiểu trừu tượng này sẽ dễ sử dụng, vấn đề thực tế tôi có là: Tôi có hàm f chuyển qua tham số p (giả sử int) và gọi hàm khác f2 , mà tự nhiên phụ thuộc vào giá trị chuyển đổi. Có thể vượt qua f2 như một đối số sẽ cho phép tôi gọi trực tiếp mà không cần chuyển đổi, vì trong ngữ cảnh ứng dụng của tôi, tôi biết chính xác hàm nào gọi bên trong f khi gọi f. Tôi không thực sự biết nếu nó có thể, cũng không phải những gì nó sẽ chi phí, nhưng tôi nghĩ rằng đi trên một chuyển đổi 100 trường hợp có lẽ là tồi tệ hơn. –
https://en.wikipedia.org/wiki/Defunctionalization – sigfpe