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
的生命周期在你注销你的收藏加载程序之前不能过期