我对提供给函数更改值的参数有疑问:
scene->shader->start( scene->shader->dataStart );
printf("%d\n",(int)scene->shader->dataStart);
然后,在 scene->shader->start 里面,我打印出来:
printf("%d\n",(int) _data );
它从我调用场景->着色器->开始的位置输出内存地址,然后在所述函数内输出0。这与我通过结构内部的指针调用函数有关吗?这绝对没有意义,因为函数中的 printf() 是该函数的第一行,所以我绝对不会在任何地方将其设置为 0!非常感谢您的帮助,Erkling。
编辑:
void shader1_setdown(void *);
typedef struct {
GLuint shaderProgram;
void *dataStart;
void *dataEnd;
void (*start)(void *data);
void (*end)(void *data);
} renderShader;
“场景”结构中有一个 renderShader*。