У меня проблемы с sf::Text
и sf::Font
. Текст не хочет рисовать. Значение std::wstring
имеет правильное текстовое значение. sf::Font
груз совершенно. Вот мой код:Проблема с рисунком sf :: Текст. C++
sf::Font mainGameFont;
void drawText(const std::wstring& str, const int size, const float xposition, const float yposition, sf::RenderWindow& window, const sf::Font& mainGameFont)
{
std::wcout << str << std::endl;
source.setFont(mainGameFont);
source.setColor(color);
source.setCharacterSize(size);
source.setString(str);
source.setPosition(xposition, yposition);
window.draw(source);
}
int main()
{
sf::RenderWindow window(sf::VideoMode(1024, 768), "test");
mainGameFont.loadFromFile("futura.ttf");
...
//Other code, calling drawText(...), etc
...
}
Может кто-нибудь помочь мне, пожалуйста? Извините за мой плохой английский.
Обновлено: Этот код не работает!
#include <string>
#include <iostream>
#include "SFML/Graphics.hpp"
sf::Font mainGameFont;
sf::Text source;
void drawText(const std::wstring& str, const int size, const float xposition, const float yposition, sf::RenderWindow& window, sf::Font& mainGameFont)
{
mainGameFont.loadFromFile("futura.ttf");
std::wcout << str << std::endl;
source.setFont(mainGameFont);
source.setColor(sf::Color::White);
source.setCharacterSize(size);
std::cout << "stat1" << std::endl;
source.setString(str);
source.setPosition(xposition, yposition);
window.draw(source);
std::cout << "ok" << std::endl;
}
int main()
{
sf::RenderWindow window(sf::VideoMode(600, 400), "Test");
while (window.isOpen())
{
window.clear(sf::Color::Black);
drawText(L"Ok", 20, 90, 90, window, mainGameFont);
window.display();
}
return 0;
}
Помните, что вы вызываете «Window :: display» для переключения заднего буфера? Если вы не знакомы с этой концепцией [мой ответ здесь] (http://stackoverflow.com/a/28075043/1732865), это объясняет. – Conduit
Вы слишком часто запрашиваете события? – user975989
@Conduit Да, я написал window.display() в конце основного цикла. –