C++ 尝试使用DirectX使用自定义字体文件-集合密钥是什么?

C++ 尝试使用DirectX使用自定义字体文件-集合密钥是什么?,c++,directx-11,C++,Directx 11,我很难理解我是如何创建一个字体集合的,我可以将它传递到我的CreateTextFormat函数中 确切的问题在于理解这其中的关键部分是什么: 到目前为止,这是我的代码,我只是随便猜测了一下收集密钥,因为我一点也不懂 // Vars IDWriteFontFace* pFontFace; IDWriteFontFile* pFontFiles; IDWriteFontCollection* pFontCollection; IDWriteFontCollection* fontCollectio

我很难理解我是如何创建一个字体集合的,我可以将它传递到我的
CreateTextFormat
函数中

确切的问题在于理解这其中的关键部分是什么:

到目前为止,这是我的代码,我只是随便猜测了一下收集密钥,因为我一点也不懂

// Vars

IDWriteFontFace* pFontFace;
IDWriteFontFile* pFontFiles;
IDWriteFontCollection* pFontCollection;
IDWriteFontCollection* fontCollection;
IDWriteFontCollectionLoader* collectionLoader;
IDWriteFontFileEnumerator* fileEnumerator;

// Set up font

HRESULT hr;

// Gets a filename from a application directory

hr = dWriteFactory->CreateFontFileReference(
    L"Assets/Fonts/PontanoSans-Regular.ttf",
    NULL,
    &pFontFiles );

IDWriteFontFile* fontFileArray[] = { pFontFiles };

if( SUCCEEDED( hr ) )
{
    hr = dWriteFactory->CreateFontFace(
        DWRITE_FONT_FACE_TYPE_TRUETYPE,
        1, // file count
        fontFileArray,
        0,
        DWRITE_FONT_SIMULATIONS_NONE,
        &pFontFace
        );
}

// Get the system font collection. BUT I DONT GET THIS PART ARGHHHH
if( SUCCEEDED( hr ) )
{
    collectionLoader->CreateEnumeratorFromKey( pDWriteFactory, pFontFiles, 1, &fileEnumerator );
    hr = pDWriteFactory->CreateCustomFontCollection( collectionLoader, fileEnumerator, 1, &fontCollection );
}
这里用的是:

// Create device independent resources
hr = dWriteFactory->CreateTextFormat(
    L"Pontano Sans",
    fontCollection, // HERE HERE HERE!
    DWRITE_FONT_WEIGHT_EXTRA_BOLD,
    DWRITE_FONT_STYLE_NORMAL,
    DWRITE_FONT_STRETCH_NORMAL,
    fontSize,
    L"en-US",
    &textFormat
    );
编辑: 我不确定我是否得到了空指针的东西,我是否在正确的轨道上:

    int key;
    void *pVoid = &key;
    collectionLoader->CreateEnumeratorFromKey( pDWriteFactory, pVoid, sizeof(int), &fileEnumerator );
    hr = pDWriteFactory->CreateCustomFontCollection( collectionLoader, pVoid, 1, &fontCollection );

解释了必要的步骤,并在最后链接到一个示例。嗯,我不能理解空指针位?显然,我已经读过这篇文章,并重新关注了这一关键部分。。你自己有没有一个例子,我不明白微软提供的例子里发生了什么,这对我来说太多了。我是一个精巧的新手。我已经添加了一个edit@melak47I,我认为应该可以,但是
key
的生命周期在你注销你的收藏加载程序之前不能过期