我已经开始搞乱C ++和SFML 2.4并且喜欢它到目前为止但是我遇到了令人沮丧的性能问题,甚至试图在屏幕周围移动一个简单的白色矩形。即使使用增量时间,移动精灵也非常紧张并且“无法播放”。它似乎是由窗口事件的轮询引起的。当被移除时,一切都像黄油一样光滑,但事件无法读取(当然)。我正在做什么或者我可以做些什么来解决这个问题?
最小例子:
#include <SFML/Graphics.hpp>
int main(){
sf::RenderWindow window(sf::VideoMode(500, 500), "Testing");
sf::Image pixelBuffer;
pixelBuffer.create(100, 100, sf::Color::White);
sf::Texture pixelTexture;
pixelTexture.loadFromImage(pixelBuffer);
sf::Sprite pixelSprite;
pixelSprite.setTexture(pixelTexture);
sf::Clock clock;
while(window.isOpen()){
//Poll for events
sf::Event event;
while(window.pollEvent(event)){
if(event.type == sf::Event::Closed){
window.close();
}
}
//Update the sprite
float delta = clock.restart().asSeconds();
pixelSprite.move(sf::Vector2f(50, 50) * delta);
//Draw the sprite
window.clear(sf::Color::Black);
window.draw(pixelSprite);
window.display();
}
}
谢谢!
答案 0 :(得分:0)
您是否有机会连接任何游戏控制器并在Windows下运行此示例?
如果是这样,您很可能会遇到已在SFML代码库中修复的已知错误。只需从official repository下载并编译最新版本(master
分支),编译并安装它,问题就不复存在了。
作为替代解决方法,请连接任何与DirectInput兼容的游戏控制器(例如操纵杆或游戏手柄)。