Will you ever need to call your function on ALL possible texture types? I don't believe. So every-time a need for a new type arises, add a new overload. That's about the best you can do, if you don't want a MACRO-hell. You'll have to hard-code them all.