LINUX.ORG.RU

[C++]Переменное число аргументов в функции.

 


0

2

Есть 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;
Но это не проканало, что я делаю не так?

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.