我正在尝试使用Xcode用SFML加载图像,但是每次我运行该程序时,窗口(已使用该代码创建)都会闪烁并消失...
这是我使用的代码:
#include <SFML/Graphics.hpp>
#include <iostream>
#define SCREEN_WIDTH 1024
#define SCREEN_HEIGHT 1024
int main()
{
sf::RenderWindow window(sf::VideoMode(SCREEN_WIDTH, SCREEN_HEIGHT), "Orsome Game");
while(window.isOpen())
{
sf::Event e;
while(window.pollEvent(e))
{
switch (e.type)
{
case sf::Event::Closed:
window.close();
break;
}
}
sf::Image image;
if(!image.loadFromFile("sprite.png")){
return -1;
}
window.clear(sf::Color(255,255,255));
window.display();
}
return EXIT_SUCCESS;
}
也已将图像文件放置在c ++文件所在的位置,但仍然无法使用!
我将sf::Style::Default
放在RenderWindow参数中,紧随“ Orsome Game”窗口名称之后。因为使用的是pollEvent,所以可以通过按右上角的x按钮退出窗口,如默认应用程序布局。
图片与解决方案文件位于同一目录中吗?还是您的main.cpp?当然应该。并且,也许尝试使用Texture
和Sprite
加载图像,如下所示:
sf::Texture texture;
texture.loadFromFile("picturename.png");
sf::Sprite sprite;
sprite.setTexture(texture);
while窗口处于开环状态。
绘制:
// after window.clear() ...
//... your code
window.draw(sprite);
//... other things to draw
// and then, your window.display();
但是,也许您的sf :: Image也应该起作用。告诉我进展如何
编辑:
尝试此代码,看看窗口是否打开。否则,这可能是在计算机上设置SFML的问题,您将必须找到一些有关如何正确设置SFSF的很好的教程!但让我们看看:
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
int main()
{
RenderWindow window(VideoMode(640, 640), "Test", Style::Default);
while (window.isOpen()) {
Event _event;
while (window.pollEvent(_event)) {
switch (_event.type) {
case Event::Closed:
window.close();
break;
}
}
window.clear();
// draw
// ...
window.display();
}
return 0;
}