Проблемы и вопросы о C ++ с SFML - PullRequest
0 голосов
/ 18 апреля 2020

По какой-то причине, 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;
    }
  }
}
...