我正在使用C ++和Visual Studio 2012中的Allegro 5,但出于某种原因,我无法使用Allegro wiki中的示例代码加载字体:
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.ttf
和C:/pirulen.ttf
两者都没有用。我也尝试将它添加到我的项目中的“Resource Files”文件夹中,但这也不起作用。
有关可能发生的事情的任何建议吗?
感谢。
答案 0 :(得分:3)
需要说的一切都在这里:
答案 1 :(得分:0)
我知道这是一个古老的问题,但是我刚刚找到它并按照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()