我无法找到正确的位置来为使用 GLKView 和 GLKViewController 的 OpenGLES 应用程序进行着色器设置。
看起来 viewDidLoad 是一个很自然的地方,但是当我在这里尝试这样做时,着色器创建失败。我的设置是这样的:
//shader helper method
int setupShaders(const char* vShader, const char* fShader); //returns a program handle
//inside GLKViewController subclass
static int program;
-(void)viewDidLoad{
[super viewDidLoad];
program = setupShaders(vsh, fsh); //program will be zero indicating setup failure
}
我知道设置代码有效,因为如果我在 -(void)glkView:(GLKView *)view drawInRect:(CGRect)rect 中调用它,它就会成功。
所以我假设当调用 -(void)viewDidLoad 时 OpenGL 没有完全初始化,或者必须做一些事情来为我正在尝试做的设置设置正确的 OpenGL 上下文,我只是找不到任何文档关于在哪里或如何正确进行设置。