1

我在 CG API 中进行了搜索,但没有找到任何方法来仅加载给定图像中的像素子集。

我需要在运行时在 openGL 中加载一个非常大的图像(要求是我不能在编译时调整它的大小)。纹理尺寸太大(> GL_MAX_TEXTURE_SIZE),所以我将它细分为其他较小的图像,这样openGL就不会抱怨。

现在这是我加载大图像的方法:

NSData *texData = [[NSData alloc] initWithContentsOfFile:textureFilePath];
UIImage *srcImage = [[UIImage alloc] initWithData:texData];

然后我使用 CG 使用 CGImageCreateWithImageInRect() ... 来细分图像,并准备好将其发送到 openGL。

问题是在 iPod touch 上应用程序崩溃了,因为它在加载大图像后占用了太多内存。我想只加载感兴趣的像素,而不必创建巨大的内存峰值,然后我可以释放内存并加载我需要的下一个块。有人知道这是否可能?

4

0 回答 0