我正在从 JPG 格式加载非常大的纹理,在 iOS5 之前,我将使用 Apple 示例 Texture2D 类将 JPG 纹理从 RGB888 转换为 RGB565 格式,以将所需的内存空间减半。然后它将以 RGB565 格式上传到带有 glTexImage2D 的 GPU。
使用 iOS5,我将调用转换为使用新的 GLKTextureLoader。然而,即使 JPG 没有 alpha 通道,它似乎也只是使用 RGB888,因此占用了 GPU 内存的两倍。
有没有办法让 GLKTextureLoader 在上传到 GPU 时使用 RGB565?我现在正在使用 [GLKTextureLoader textureWithContentsOfFile:jpgFile]。我还尝试了 [GLKTextureLoader textureWithContentsOfData:data] 并将原始 RGB565 位图的 NSData 传递给它,但是当我尝试这样做时出现错误“{GLKTextureLoaderErrorKey=图像解码失败}”。