我正在使用Xcode和SFML。我将我的文件放在Xcode项目中,该项目将其复制到目录中。但是,我仍然无法将其加载到程序中。有什么想法吗?
代码:
int main(int argc, const char * argv[])
{
sf::RenderWindow(window);
window.create(sf::VideoMode(800, 600), "My window");
sf::Texture img;
if(!img.loadFromFile("colorfull small.jpg")) return 0;
sf::Sprite sprite;
sprite.setTexture(img);
window.draw(sprite);
window.display();
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed) window.close();
}
}
return 0;
}
编译器:
目录:
谢谢
答案 0 :(得分:2)
错误有几个原因:
不支持某些格式选项,例如渐进式jpeg。
或
它找不到文件,因为文件名中有空格(重命名文件,例如colorfull_small.jpg)
或
该程序的工作目录没有.jpg文件(您可以使用getcwd(NULL)
打印(#include <unistd.h>
中提供))
答案 1 :(得分:2)
我有点惊讶的是,“正确答案”有一条评论说它不起作用......无论如何:
您的渲染(绘图)需要在循环的每次迭代中进行:
int main(int argc, const char * argv[])
{
sf::RenderWindow(window);
window.create(sf::VideoMode(800, 600), "My window");
sf::Texture img;
if(!img.loadFromFile("colorfull small.jpg")) return 0;
sf::Sprite sprite;
sprite.setTexture(img);
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed) window.close();
}
// drawing needs to take place every loop right HERE
window.clear();
window.draw(sprite);
window.display();
}
return 0;
}
答案 2 :(得分:1)
该项目在main.cpp中有一个基本示例和一个辅助函数:std :: string resourcePath(void);在ResourcePath.hpp和ResourcePath.mm中。如提供的示例所示,此函数的用处是以方便的方式访问应用程序包的Resources文件夹。
这意味着您必须写下以下内容:
#include "ResourcePath.hpp"
:
:
if (!icon.loadFromFile(resourcePath() + "colorfull small.jpg")) {
:
:
(受项目模板生成的默认代码的启发。)
nvoigt的回答也很重要。