无法在 Allegro 中加载字体

3
我在使用C++和Visual Studio 2012玩弄Allegro 5,但是出于某些原因,我无法使用Allegro维基上的示例代码加载字体:
    ALLEGRO_FONT *font = al_load_ttf_font("pirulen.ttf",72,0 );

   if (!font){
      fprintf(stderr, "Could not load 'pirulen.ttf'.\n");
      return false;
   }

   al_clear_to_color(al_map_rgb(50,10,70));
   al_draw_text(font, al_map_rgb(255,255,255), 640/2, (480/4),ALLEGRO_ALIGN_CENTRE, "It worked!");

我已经尝试将字体文件放置在Visual Studio项目中的每个可行目录中,以及.exe所在的目录中(正如其他几个帖子建议的那样)。 我还尝试将其副本放在C:驱动器中,并使用完全限定路径进行调用:我尝试了 C:\\pirulen.ttfC:/pirulen.ttf 但两者都不起作用。 我还尝试将其添加到项目中的“资源文件”文件夹中,但也没有起作用。

有什么建议吗?

谢谢。

2个回答

3

谢谢,那解决了问题。在字体教程页面上并没有提到init函数的任何内容:http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Addons/Fonts - PseudoPsyche

1

我知道这是一个老问题了,但我刚发现它并阅读了Matthew建议的文档(每个人都应该这样做),所以我想为任何寻找简单答案的人在这里添加一下。

如果你愿意,你可以处理为每个资源创建一个路径,但是更容易的方法是使用al_change_directory来设置你的资源目录,然后你就可以在那里找到你的资源。

al_init_font_addon(); // initialize the font addon
al_init_ttf_addon();// initialize the ttf (True Type Font) addon

ALLEGRO_PATH *path = al_get_standard_path(ALLEGRO_RESOURCES_PATH);
al_append_path_component(path, "resources");
al_change_directory(al_path_cstr(path, '/'));
al_destroy_path(path);

然后您可以相对于 resource 根路径引用路径。

ALLEGRO_FONT* font = al_load_ttf_font("LibreCaslonText-Bold.ttf", 72, 0);

// Check font is loaded
if (!font) {
    fprintf(stderr, "failed to load font!\n");
    al_destroy_font(font);
    return -1;
}

为了澄清,LibreCaslonText-Bold.ttf 存在于 project_dir/resources/LibreCaslonText-Bold.ttf 附注 在我的情况下,我还需要将资源复制到构建目录中。因此,我在我的 CMakeLists.txt 中添加了这个。
if (NOT ${PROJECT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
    file(COPY "${PROJECT_SOURCE_DIR}/resources" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endif()

1
这个解决方案在2022年对我有效,谢谢! - Joe Gasewicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接