Есть ли способ, которым я могу эффективно переключаться между 2 подобными наборами функций (C / C ++)?
Чтобы лучше объяснить, что я имею в виду, скажем, у меня есть 2 набора глобальных функций, таких как:
void a_someCoolFunction();
void a_anotherCoolFunction(int withParameters);
…
void b_someCoolFunction();
void b_anotherCoolFunction(int withParameters);
…
И я хочу иметь возможность "переключаться" в моей программе во время выполнения, какая из них используется. НО: я не хочу иметь один, если условие при каждой функции, например:
void inline someCoolFunction(){
if(someState = A_STATE){
a_someCoolFunction();
}else{
b_someCoolFunction();
}
}
Потому что, я ожидаю, что каждая функция вызывается много в моем mainloop - поэтому было бы предпочтительнее, если бы я мог сделать что-то вроде этого (при запуске mainloop или при изменении someState):
if(someState = A_STATE){
useFunctionsOfType = a;
}else{
useFunctionsOfType = b;
}
, а затем просто позвоните
useFunctionsOfType _someCoolFunction();
Надеюсь, это понятно, что я имею в виду… Моя справочная информация: я пишу приложение, которое должно уметь обрабатывать OpenGL ES 1.1 и OpenGL ES 2.0 одновременно, но я не хочу писать каждый метод рендеринга 2 раза (например: renderOpenGL1()
и renderOpenGL2()
Я бы предпочел написать только render()
). У меня уже есть похожие методы: glLoadIdentity(); myLoadIdentity();
… Но нужен способ как-то переключаться между этими двумя.
Есть ли способ сделать это эффективным способом?