По какой-то причине, RenderWindow
, который я сделал, очень сильно отстает. Я сделал прямоугольную форму, чтобы двигаться вправо, но движение не выглядит плавным на всех. Это из-за vsyn c?
Application. cpp:
#include <SFML/Graphics.hpp>
#include "Application.h"
int main() {
sf::RenderWindow window(sf::VideoMode(740, 580), "Window", sf::Style::Titlebar |
sf::Style::Close);
sf::Clock clock;
float deltaTime{ 0.0f };
window.setVerticalSyncEnabled(true);
window.setActive(false);
initialize();
while (window.isOpen()) {
processWindowEvents(window);
deltaTime = clock.restart().asSeconds();
handleInput(deltaTime);
windowUpdate(deltaTime);
windowRender(window);
}
}
Application.h
#pragma once
#include <SFML/Graphics.hpp>
sf::RectangleShape buddy(sf::Vector2f(50.0f, 50.0f));
sf::Vector2f buddyPos(sf::Vector2f(0.0f, 0.0f));
const int speed = 130;
void initialize() {
}
void handleInput(float deltaTime) {
}
void windowUpdate(float deltaTime) {
buddyPos.x += speed * deltaTime;
buddy.setPosition(buddyPos.x, buddyPos.y);
}
void windowRender(sf::RenderWindow& window) {
window.clear();
window.draw(buddy);
window.display();
}
void processWindowEvents(sf::RenderWindow& window) {
sf::Event event;
while (window.pollEvent(event)) {
switch (event.type) {
case sf::Event::Closed: window.close(); break;
case sf::Event::Resized: break;
case sf::Event::TextEntered: break;
case sf::Event::KeyReleased: break;
}
}
}