我使用的是Assimp
,當使用嵌入紋理的FBX時,Assimp在以下struct aiTexture
's pcData
slot中提供嵌入的紋理數據。爲pcData
文檔說:如何解碼從Assimp到CGImage的原始PNG數據?
適當的解碼器(如的libjpeg,libpng的,D3DX,魔鬼)需要 加載論文紋理。 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);