SFML与SDL(或SDL2)一样,可以绘制图像,但是方式有些不同。
在SDL(或SDL2)中,你需要这么制作对象:
struct obj
{
int x,y;
SDL_Texture * texture = nullptr;
};
(至少这样比
int obj1_x,obj1_y;
SDL_Texture * obj1_texture = nullptr;
好得多)
但是在SFML中,只需要用sf::Sprite即可,它包含了许多功能,比如move()等,比上面的obj好用的多。
只需要
sf::Texture texture;
texture.loadFromFile("image.png")
sf::Sprite sprite(texture);//获取整个纹理
sf::Sprite sprite(texture,sf::IntRect(0,0,100,100));//截取其中一部分
便可轻松创建,详见官网API文档。
最后,用window.draw()绘制出来即可。
注:如果你为了省事制作一个函数如:
//好久没写SFML有点忘了
sf::Texture loadTexture(std::string filename)
{
sf::Texture load;
if(!load.loadFromFile(filename))
return nullptr;
return load;
}
你只会得到一个白色方块,因为函数结束后load被销毁掉了。