int main(int argc, char* argv[]) { COption option; // オプション解析 if (!option.Analysis(argc, argv)) { _DispUsage(); return INVALID_RET_VAL; } // オプションチェック if (!option.IsValid()) { _DispUsage(); return INVALID_RET_VAL; } IImporter::SetEnableTexIdx(option.idxEnableTex); IImporter::SetShaderName(option.nameShader.c_str()); // インポーター作成 IImporter* importer = IImporter::CreateImporter(option.modelType); #ifdef ENABLE_FBX_IMPORT if (importer == IZ_NULL && option.modelType == ModelType::ModelTypeFBX) { importer = new CFbxImporter(); } #endif // 入力ファイルを開く VRETURN_VAL( importer->Open(option.in.c_str()), INVALID_RET_VAL); static IZ_CHAR tmp[MAX_PATH]; // マテリアル数を取得 IZ_UINT mtrlNum = importer->GetMaterialNum(); if (mtrlNum == 0) { // 何もしない // マテリアルが存在しないことを出力 printf("There is not material in %s\n", option.in.c_str()); } else if (mtrlNum == 1) { VRETURN_VAL( CMtrlExporter::GetInstance().Export( option.out.c_str(), importer, 0), INVALID_RET_VAL); } else { // 出力ファイル名から拡張子を取り除く VRETURN_VAL( option.RemoveExtFromExportFileName(), INVALID_RET_VAL); for (IZ_UINT i = 0; i < mtrlNum; i++) { // 出力ファイル名を作成 sprintf_s(tmp, sizeof(tmp), "%s_%d.mtrl\0", option.out.c_str(), i); VRETURN_VAL( CMtrlExporter::GetInstance().Export( tmp, importer, i), INVALID_RET_VAL); } } return 0; }
int main(int argc, char* argv[]) { int nRetCode = 0; CFontConverterBase* fontConverter = IZ_NULL; COption cOption; izanagi::tool::CGraphicsDeviceLite* pDevice = IZ_NULL; izanagi::CFileOutputStream cOut; // オプション解析 if (!cOption.Analysis(argc, argv)) { _DispUsage(); _VGOTO(IZ_FALSE, __EXIT__); } // オプション正当性チェック if (!cOption.IsValid()) { _DispUsage(); _VGOTO(IZ_FALSE, __EXIT__); } // リストファイルを解析 _VGOTO(cOption.AnalysisListFile(), __EXIT__); // ウインドウハンドル取得 HWND hWnd = ::GetConsoleWindow(); if (hWnd == NULL) { hWnd = FindWindow(0, 0); } _VGOTO(hWnd != NULL, __EXIT__); // GraphicsDevice作成 pDevice = izanagi::tool::CGraphicsDeviceLite::CreateGraphicsDeviceLight(hWnd); _VGOTO(pDevice != IZ_NULL, __EXIT__); { std::vector<izanagi::tool::CString>::iterator it = cOption.in_file_list.begin(); while (it != cOption.in_file_list.end()) { izanagi::CFileInputStream cIn; _VGOTO(cIn.Open(*it), __EXIT__); // 文字列登録 CCharList::GetInstance().Register( cOption.charEncode, &cIn); cIn.Close(); it++; } } // デバイスコンテキスト取得 HDC hDC = ::GetDC(hWnd); _VGOTO(hDC != NULL, __EXIT__); //fontConverter = new CFontConverterGDI(); fontConverter = new CFontConverterFT(); // 準備 _VGOTO( fontConverter->Init(hDC, cOption), __EXIT__); // フォントイメージデータ作成 _VGOTO( fontConverter->CreateFontImage(cOption, CCharList::GetInstance().GetCharList()), __EXIT__); // 出力 #if 0 _VGOTO( CFontConverter::GetInstance().ExportAsDDS(), __EXIT__); #else _VGOTO( cOut.Open(cOption.out_file), __EXIT__); _VGOTO( fontConverter->Export(&cOut, cOption, CCharList::GetInstance().GetCharList()), __EXIT__); cOut.Finalize(); #endif __EXIT__: // 開放 fontConverter->Release(); SAFE_DELETE(fontConverter); SAFE_RELEASE(pDevice); return nRetCode; }
int main(int argc, char* argv[]) { int nRetCode = 0; COption option; izanagi::tool::CGraphicsDeviceLite* device = IZ_NULL; std::vector<izanagi::tool::CTextureLite*> texInEnv; std::vector<izanagi::tool::CTextureLite*> texOutEnv; std::vector<izanagi::tool::CString> inTexList; std::vector<izanagi::tool::CString> outTexList; // ウインドウハンドル取得 HWND hWnd = ::GetConsoleWindow(); VGOTO(hWnd != NULL); // グラフィックスデバイス作成 device = izanagi::tool::CGraphicsDeviceLite::CreateGraphicsDeviceLight(hWnd); VGOTO(device != NULL); // オプション解析 IZ_BOOL result = option.Analysis(argc, argv); VGOTO(result); VGOTO(option.IsValid()); _GetTexNameList( option.in, option.typeInEnvMap, inTexList); // 環境マップ読み込み for (size_t i = 0; i < inTexList.size(); i++) { // NOTE // クロスの場合は2のべき乗にはならない izanagi::tool::CTextureLite* tex = device->CreateTextureFromFile( inTexList[i], option.typeInEnvMap == EnvMapTypeCross ? IZ_TRUE : IZ_FALSE); VGOTO(tex != NULL); texInEnv.push_back(tex); } // 出力先のサイズを計算 IZ_UINT outWidth, outHeight; IZ_BOOL isValid = _ComputeSize( option.typeInEnvMap, option.typeOutEnvMap, texInEnv[0]->GetWidth(), texInEnv[0]->GetHeight(), outWidth, outHeight); VGOTO(isValid); _GetTexNameList( option.out, option.typeOutEnvMap, outTexList); // 出力先作成 // 強制的にRGBA32Fにする for (size_t i = 0; i < outTexList.size(); i++) { izanagi::tool::CTextureLite* tex = device->CreateTexture( outWidth, outHeight, izanagi::graph::E_GRAPH_PIXEL_FMT_RGBA32F); VGOTO(tex != NULL); texOutEnv.push_back(tex); } // 変換 Convert( texInEnv, option.typeInEnvMap, texOutEnv, option.typeOutEnvMap); // 出力先保存 for (size_t i = 0; i < outTexList.size(); i++) { result = device->SaveTexture( outTexList[i], texOutEnv[i], option.typeExport); VGOTO(result); } __EXIT__: _ReleaseTexture(texInEnv); _ReleaseTexture(texOutEnv); SAFE_RELEASE(device); return nRetCode; }