Это, вероятно, будет звучать как глупый вопрос ...Проблема конденсации код в C++ - SFML
У меня есть этот кусок кода в C++, который использует библиотеку SFML:
#include <SFML/Graphics.hpp>
#include <string>
void textDisplay(sf::Text& display_text, std::string display_str, sf::Font display_font, int char_size) {
display_text.setString(display_str);
display_text.setFont(display_font);
display_text.setCharacterSize(char_size);
display_text.setStyle(sf::Text::Regular);
}
int main() {
sf::RenderWindow window(sf::VideoMode(400, 400), "Game");
sf::Font arial;
if (!arial.loadFromFile("fonts/arial/arial.ttf")) {
return 0;
}
sf::Text text;
textDisplay(text, "Hello, World!", arial, 30);
sf::CircleShape shape(100.f, 10);
shape.setFillColor(sf::Color::Yellow);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
window.clear();
window.draw(text);
window.display();
}
return 0;
}
Поскольку я собираюсь повторять те же четыре строки кода снова и снова, когда я пытаюсь отобразить текст на экране SFML, вместо того, чтобы повторять код, я создал функцию (textDisplay
), которая принимает четыре аргумента (сам объект Text
, строка, шрифт и размер символа) и инициализирует Text
объект для меня.
По какой-то причине текст не отображается - есть ли что-то, что я делаю неправильно?
Некоторые вещи:
- окно называется
window
. - При компиляции ошибок нет, поэтому я понятия не имею, где ошибка.
- Плата сама по себе только черная, там нет текста на
window
.
Если ошибка связана с самой функцией, вы можете порекомендовать альтернативу повторять одно и то же четыре строки снова и снова?
ли переворачивать/представить буфер после рисования вы? –
@ IvanRubinson Да, я сделал - держись, я поставлю его в фрагмент. –
@IvanRubinson Yup, понял. –