在读取期间打开gl内存问题

时间:2017-01-29 19:41:43

标签: ios objective-c iphone-6 iphone-6-plus

我使用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

0 个答案:

没有答案