GLSL에서 다른 함수의 인수로 함수를 사용하는 방법을 찾고 있습니다. 보통 C에서는 함수 포인터를 함수 인수로 전달하여 시뮬레이션 할 수 있습니다. 또한 다른 언어 (예 : HLSL)가 고차원 함수와 같은 상위 수준 구조를 처리하는 방법을 제공하거나이를 clever use of HLSL structures으로 시뮬레이트 할 수있는 것으로 보입니다. 불행히도 지금 GLSL에 붙어있어 고차 함수를 시뮬레이션 할 수있는 방법을 찾을 수 없습니다. 현재 (4.2) GLSL에서 실제로 불가능합니까? 아니면 영리한 트릭을 놓치고 있습니까? 내가 달성하기 위해 노력하고있어의GLSL의 2 차 함수?
일반적인 예 :
int f(someType f2, int i) {
return f2(i);
}
그리고 쉐이더에서 이런 종류의 (아마도 비용이 많이 드는) 간접 지정이 필요합니다 ...? –
이런 종류의 추상화는 사용하기 쉽다는 사실 외에도 실제 문제는 다음과 같습니다. 매개 변수 p (int라고 가정)를 전환하는 함수 f가 있고 다른 함수 f2 이 성격은 교환 된 가치에 달려있다. f2를 인수로 전달할 수있게되면 전환하지 않고 직접 호출 할 수있게됩니다. 이는 응용 프로그램의 컨텍스트에서 f 자체를 호출 할 때 f 내부에서 호출 할 함수를 정확히 알고 있기 때문입니다. 나는 그것이 가능할 지, 어떤 비용이 들지는 모르지만, 100 개의 스위치를 사용하는 것이 더 나쁘다고 생각합니다. –
https://en.wikipedia.org/wiki/Defunctionalization – sigfpe