我使用Open GL和Objective C在iOS中使用3D模型。我有3个不同的3D模型文件,其中包含顶点,法线和索引信息。当我从Document目录开始读取此文件时,它会读取索引文件,但是当它开始读取Normal或Vertex文件时,由于内存问题,它会抛出错误。而这个问题只在iPhone 6和6Plus上讨价还价。我已经在iPhone 5C,5S,6S和7上测试了它,它的工作完全没有内存问题。
那么你能帮我解决我如何解决iPhone 6和6 plus的问题。下面是我用来填充顶点和普通缓冲区的示例代码:
-(NSArray*) parseNormalsResource:(NSData*)buffer withPostition:(int)position{
unsigned long count = 0;
int floatSize = sizeof(float);
float *floatNormal=NULL;
int normalCapacity=0;
normalCapacity = getInt32(buffer, &position);
count = (buffer.length-floatSize)/floatSize;
floatNormal = (float*)malloc(normalCapacity * floatSize);
for (int j = 0; j < count; j++){
@autoreleasepool {
float v1 = *(float*)[[buffer subdataWithRange:NSMakeRange(position, floatSize)] bytes];
position = position + floatSize;
floatNormal[j] = v1;
}
}
NSArray *normalResource = @[[NSValue valueWithPointer:floatNormal],[NSNumber numberWithInt:normalCapacity]];
return normalResource;
}
以上整个函数在后台线程中运行,一旦完成,我将该值分配给NSMutablData对象,并在Open GL中使用该变量进行渲染。
self.nonSelectablesNormalsBuffer = [NSMutableData dataWithBytes:[[arrNormals objectAtIndex:0] pointerValue] length:([[arrNormals objectAtIndex:1] intValue]*sizeof(float))];
请建议我在哪里做错了。
谢谢, Devesh