【发布时间】:2018-02-05 21:28:03
【问题描述】:
我正在使用Assimp,当使用带有嵌入纹理的FBX 时,Assimp 在以下struct aiTexture's pcData slot 中提供嵌入的纹理数据。 pcData 的文档说:
适当的解码器(如 libjpeg、libpng、D3DX、DevIL)是 需要加载这些纹理。 aiTexture::mWidth 指定大小 以字节为单位的纹理数据,aiTexture::pcData 是指向 原始图像数据
我知道pcData 将包含 png 标头、块等,libPNG 可以将实际图像数据与其他规格(宽度、高度等)返回给我。
什么是原生 iOS/macOS API 来代替libPNG?
例如:CGImageCreateWithPNGDataProvider source 属性将其描述为a data provider supplying PNG encoded data。我尝试了一些这样的代码,但这不起作用:
CGDataProviderRef dataProvider = NULL;
dataProvider = CGDataProviderCreateWithData(NULL,
(const void*)texture->pcData,
texture->mWidth,
rgbReleaseRampData);
if(dataProvider) {
NSLog(@" ********* Created image data provider ");
}
// fails at this line
CGImageRef imageRef = CGImageCreateWithPNGDataProvider(dataProvider,
NULL,false, kCGRenderingIntentDefault);
【问题讨论】: