[C++]Переменное число аргументов в функции.
Есть 2 структуры:
struct nShader
{
GLuint shaID;
nUInt AUcnt;
nString* AUnames;
nByte* AUtypes;
};
struct nShaderProgram
{
GLuint shprogID;
nShader** shdraddrs;
GLuint* AUindexes;
nString* AUnames;
nUInt AUcnt;
nByte* AUtypes;
};
void nMakeShaderProgram(nShaderProgram* prog, nUInt amt, ...);
Первый параметр содержит адрес программы, к которой будут линковаться шейдеры, 2-ой - количество линкуемых шейдеров, остальное - адреса шейдеров. Надо из этой процедуры вытащить из шейдера (nShader) все переменные.
nShader sh1, sh2;
nShaderProgram program;
void nMakeShaderProgram(&program, 2, &sh1, &sh2);
Я пробовал получить адреса шейдеров так:
nShader* current = (nShader*)&prog+sizeof(prog)+sizeof(amt)+(sizeof(nShader*)*i);
//i - номер шейдера, отсчёт начинается с нуля.
Для последующей работы, как с обычным указателем:
current->AUcnt;