Я понял эту проблему.
Этот код действителен, но, похоже, не работает.Эта проблема описана здесь , но она не так очевидна.
Решение, которое работает для меня, заключается в создании отдельного класса со свойством GLuint:
@interface Texture : NSObject
GLuint texture;
@end
@property (nonatomic, readwrite) GLuint texture;
Затем мы можем создать NSMutableArray of Textures:
NSMutableArray *textures;
In *.В файле m мы должны заполнить наш массив:
for(int i=0;i<N;i++){
Texture *t = [[Texture alloc] init];
t.texture = i;
GLuint l = t.texture;
[textures addObject:t];
glGenTextures(1, &l);
}
Если вы используете другие массивы с текстурами, вам нужно сместить индексы GLuint, например:
t.texture = i+M;
где M - размерранее использовавшийся массив GLuint.
Тогда getTexture будет переписан следующим образом:
-(GLuint)getTexture:(int)index{
return textures[index].texture;
}
Я не в восторге от этого подхода, но я работаю над одним.