示例#1
0
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;
}
示例#2
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;
}
示例#3
0
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;
}