我习惯使用SDL for C ++,但我听说SFML更好,所以我尝试了。我试图渲染一个基本的精灵,但是没有用。然后我试图将窗口清除为不同的颜色,但是没有用。这是简单的代码,所以发生了什么? (由于某些原因,间距有点偏,对不起)
#include <iostream>
#include "SFML/Graphics.hpp"
int main(){
sf::RenderWindow window(sf::VideoMode(640, 480), "It worked");
sf::Texture boxTexture;
boxTexture.loadFromFile("box.png");
while (window.isOpen()){
window.clear(sf::Color::Blue);
sf::CircleShape circle;
circle.setRadius(10);
circle.setPosition(1, 1);
circle.setFillColor(sf::Color::Blue);
window.draw(circle);
window.display();
}
return 0;
}
所有这一切都显示白屏......它不会将背景更改为蓝色。有谁知道我做错了什么?
答案 0 :(得分:1)
即使你不需要它,你也必须把事件处理循环。从SFML教程页面:
人们经常犯的错误就是忘记事件循环,仅仅是因为他们还不关心处理事件(他们使用的是实时输入)。如果没有事件循环,窗口将无响应。重要的是要注意事件循环有两个角色:除了向用户提供事件之外,它还为窗口提供了处理其内部事件的机会,这是必需的,以便它可以对移动或调整用户操作做出反应。
您可以详细了解here
希望这有帮助