c++ - SDL TTL_OpenFont 返回 NULL 而没有错误
问题描述
当我尝试打开字体时,我总是得到 NULL 作为回报,并且 TTL_GetError 不提供任何错误消息。
我在 Windows 下使用 SDL2 (v2.0.9.0) 和 SDL_TTF (v2.0.15)。
代码片段:
SDL/TTF 初始化:
bool Graphics::Init()
{
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("[SDL]\tInitialization error: %s\n",SDL_GetError());
return false;
}
mWindowFlags |= SDL_WINDOW_SHOWN;
if (SCREEN_FULLSCREEN) mWindowFlags |= SDL_WINDOW_FULLSCREEN;
if (SCREEN_BORDERLESS) mWindowFlags |= SDL_WINDOW_BORDERLESS;
mWindow = SDL_CreateWindow("Titel", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, mWindowFlags);
if (mWindow == NULL)
{
printf("[SDL]\tWindow creation error: %s\n", SDL_GetError());
return false;
}
mRenderer = SDL_CreateRenderer(mWindow, -1, SDL_RENDERER_ACCELERATED);
if (mRenderer == NULL)
{
printf("[SDL]\tRenderer creation error: %s\n", SDL_GetError());
return false;
}
SDL_SetRenderDrawColor(mRenderer, 0xFF, 0xFF, 0xFF, 0xFF);
// Flags for image format handle
int flags = IMG_INIT_PNG;
if (!(IMG_Init(flags) & flags))
{
printf("[SDL IMG]\tInitialization error: %s\n", IMG_GetError());
return false;
}
if (TTF_Init() != 0)
{
printf("[SDL TTF]\tInitialization error: %s\n",TTF_GetError());
return false;
}
mBackBuffer = SDL_GetWindowSurface(mWindow);
return true;
}
TTF 字体:
TTF_Font * AssetManager::GetFont(std::string filename, int size)
{
std::string fullpath = SDL_GetBasePath();
fullpath.append("Assets\\Fonts\\" + filename);
std::string key = fullpath + (char)size;
if (mFonts[key] == nullptr)
{
mFonts[key] == TTF_OpenFont(fullpath.c_str(), size);
if (mFonts[key] == nullptr)
{
printf("[SDL TTF]\tFont loading error: Font:(%s) | FPath:(%s) | Error:(%s)\n",filename.c_str(), fullpath.c_str(), TTF_GetError());
}
}
return mFonts[key];
}
我已经尝试了不同的 TTF 字体,但没有成功。如果我给他一个不存在的字体,我会收到一个无法加载的正常错误。
有人有任何想法或有类似的问题吗?
解决方案
推荐阅读
- elixir - Ecto - 自动大写字段
- typescript - 转换为函数时无法编译代码
- ruby-on-rails - 查找关联记录仅具有特定属性值的所有记录
- java - If 语句 - 空安全的可变顺序
- java - isDisplayable(),isShowing(),isVisible() 为 JDialog 提供错误值
- python-3.x - 显式 __init__ python
- css - 如何循环一组动画,即每行在css动画中弹跳一次?
- spring-boot - ConditionalOnExpression 无法将配置属性与枚举类型进行比较,作为字符串工作
- c# - NewtonSoft 不正确的反序列化
- selenium - 从下拉框中选择 - selenium