Можно ли передать перечисление в качестве параметра в функцию с переменными числами? Я пытаюсь сделать следующее:
GLenum ShaderManager::initialize()
{
GLuint program = loadShader("Flat", 2, ATTRIBUTE_VERTEX, "coord3d", ATTRIBUTE_TEXTURE0, "texcoord");
//...
}
GLuint ShaderManager::loadShader(std::string shaderName, ... )
{
GLuint program;
//...
va_list arglist;
va_start(arglist, shaderName);
int count = va_arg(arglist, int);
for(int i = 0; i < count; i++) {
AttributeLocation location = va_arg(arglist, AttributeLocation);
char * name = va_arg(arglist, char *);
glBindAttribLocation(program, location, name);
}
va_end(arglist);
//...
}
Где ATTRIBUTE_VERTEX
и ATTRIBUTE_TExTURE
объявлены как
enum AttributeLocation {
ATTRIBUTE_VERTEX = 0,
ATTRIBUTE_COLOR,
ATTRIBUTE_NORMAL,
ATTRIBUTE_TEXTURE0
};
Но программа просто завершается. При отладке программы я обнаружил, что ошибка возникает в первой строке после цикла for. Поэтому мне интересно, возможно ли это сделать или это что-то незаконное.