У меня возникли проблемы с поиском правильного места для настройки шейдера для приложения OpenGLES с использованием GLKView и GLKViewController.
Кажется, что 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.
Итак, я предполагаю, что OpenGL не полностью инициализирован, когда вызывается -(void)viewDidLoad, или что-то нужно сделать, чтобы установить правильный контекст OpenGL для настройки, которую я пытаюсь сделать, я просто не могу найти никакой документации где и как сделать настройку правильно.