是否可以在 GLSL 中为不同的参数类型定义一次函数?

问题描述 投票:0回答:1

假设我有这样一个函数,

vec2 myFun(vec2 v){
   return vec2(length(v));
}

是否有可能避免为 vec2 和 vec3 值参数和输出分别定义完全相同的函数?或者更一般地说,如果我的函数体只包含其他 genType 函数,我可以为所有参数类型只定义一次吗?

opengl glsl webgl
1个回答
0
投票

GLSL 本身不支持这一点,但您可以使用宏让预处理器为您完成工作:

#define _(TYPE)\
TYPE myFun(TYPE v){\
    return TYPE(length(v));\
}
// define above functions for gentypes
_(float)_(vec2)_(vec3)_(vec4)

请注意,您必须转义宏中的换行符,因此您可能希望宿主应用程序以这种方式将其拼接在一起。

© www.soinside.com 2019 - 2024. All rights reserved.