SFML window.draw();只出现一小段时间
SFML window.draw(); only shows up for a small time
我正在尝试使用 SFML 显示图片(只是一个测试 运行)。程序可以找到图片,并打开一个新的window,但是当它打开window时它只弹出半秒然后returns和1。这是代码(只是我调整的他们的例子):
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");
sf::Texture Texture;
sf::Sprite Sprite;
if(!Texture.loadFromFile("resources/pepe.png"));
return 1;
Sprite.setTexture(Texture);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(Sprite);
window.display();
}
return 0;
}
我假设错误来自加载后的 return 1;
,但我看不出有什么问题。有人可以 post 一些对他们有用的东西或者给我一些可能出错的提示吗?
除了从文件加载纹理后的 ;
之外,您的代码工作正常,使您的程序始终 return 1,无论之前发生了什么。
最好添加错误消息以了解问题所在。
#include <SFML/Graphics.hpp>
#include <iostream>
int main()
{
sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");
sf::Texture Texture;
sf::Sprite Sprite;
if(!Texture.loadFromFile("resources/pepe.png")){ // there was a ; here.
// making the code below always run.
std::cerr << "Error loading my texture" << std::endl;
return 1;
}
Sprite.setTexture(Texture);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed){
window.close();
}
// you only get here when there is at least one event.
}
// but you always want to display to the screen.
window.clear();
window.draw(Sprite);
window.display();
}
return 0;
}
我的经验法则是始终用大括号括起代码块,这样您就不会犯此类错误(或者其他人更改您的代码就不太可能犯这种错误)。
我正在尝试使用 SFML 显示图片(只是一个测试 运行)。程序可以找到图片,并打开一个新的window,但是当它打开window时它只弹出半秒然后returns和1。这是代码(只是我调整的他们的例子):
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");
sf::Texture Texture;
sf::Sprite Sprite;
if(!Texture.loadFromFile("resources/pepe.png"));
return 1;
Sprite.setTexture(Texture);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(Sprite);
window.display();
}
return 0;
}
我假设错误来自加载后的 return 1;
,但我看不出有什么问题。有人可以 post 一些对他们有用的东西或者给我一些可能出错的提示吗?
除了从文件加载纹理后的 ;
之外,您的代码工作正常,使您的程序始终 return 1,无论之前发生了什么。
最好添加错误消息以了解问题所在。
#include <SFML/Graphics.hpp>
#include <iostream>
int main()
{
sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");
sf::Texture Texture;
sf::Sprite Sprite;
if(!Texture.loadFromFile("resources/pepe.png")){ // there was a ; here.
// making the code below always run.
std::cerr << "Error loading my texture" << std::endl;
return 1;
}
Sprite.setTexture(Texture);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed){
window.close();
}
// you only get here when there is at least one event.
}
// but you always want to display to the screen.
window.clear();
window.draw(Sprite);
window.display();
}
return 0;
}
我的经验法则是始终用大括号括起代码块,这样您就不会犯此类错误(或者其他人更改您的代码就不太可能犯这种错误)。