Созданные ответы форума
-
АвторСообщения
-
Ну или гемороиться со сложно логикой синхронизации потоков либо избавиться от необходимости вызывать draw из разных потоков (изменить архитектуру своей программы).
1) Поток запускается сразу после создания объекта потока. Так что он будет работать параллельно с циклом. join метод синхронизации потоков, который в одном потоке ждет завершения другого. В этом вообще никакой разницы с твоим кодом нет, разве что главный поток ждет завершения работы потока цикла обработки событий.
2) Рисовать ты действительно можешь только в одном потоке. Вот дока. Я же показываю как можно обрабатывать события в одном потоке и рисовать в другом. Я проверил этот код в linux с clang компилятором. Сейчас проверю в windows с visual studi0 2015. Но скорее всего и там оно работает.Попробуй использовать вместо RenderWindow::pollEvent RenderWindow::waitEvent. Вот пример кода, который работает у меня: gist.github.com/RazorNd
Смотри в доке по этим функциям. Или назови какие именно функции тебя интересуют.
Сформулируй свою проблему более чётко. Лучше с кусками исходного кода.
Ну наверное проблема с текстурами кнопок. Надо дебажить.
barbar, данная проблема не у sf::RenderTexture. То о чем вы говорите это проблема sf::Texture. Кстати, там необязательно 8192×8192, это зависит от видеокарты. В любом случае вы не сможете целиком загрузить ваше большое изображение в текстуру и вам так же придется создавать отдельные текстуры под разные части изображения.
Вообще есть класс sf::RenderTexture. С ним можно работать так же как и с sf::RenderWindow. Вот ссылка на доку с примером.
C++1rect.widthВ зависимости от того что ты имеешь ввиду:
– Есть ли такая возможность в SFML? – Нет нету
– Есть ли такая возможность в принципе? – Конечно, ты ж программист. Используй, например, библиотеку sfeMovie, которая основана на SFML.
Ты можешь изменять значение alpha канала у спрайта, тем самым устанавливая его прозрачность.
C++1sprite.setColor(sf::Color(255, 255, 255, alpha))alpha изменяется от 0 до 255, где 0 – полностью прозрачный, а 255 – непрозрачный.
Скорее всего тебе нужна аренда VPS. Когда я искал себе дешевую VPS’ку более менее приемлемое стоит, где то от 1 евро в месяц. Но учти, что тебе придется самому админить linux сервак, а это только терминал и ssh. Зато в твоем распоряжении полноценный комп (на самом деле конечно виртуалка, но не суть), где можешь делать что угодно и как угодно. Ставить любые пакеты, использовать любые технологии.
11.05.2016 в 00:25 в ответ на: Ошибка 11 error C2589: (: недопустимая лексема справа от "::" rect.inl #3759+1Попробуй добавить после include секции этого cpp-файла эти строки:
C++12#undef min#undef maxМожешь попробовать делать, как делают демоны в linux, а именно: определить в системе под твою программу файл. Как только программа начинает работать считывает из этого файла pid процесса, если такой процесс существует программа закрывается, так как это значит, что уже один экземпляр данной программы работает. Если процесса с таким pid нету или файл пустой, то значит что ни одного экземпляра твоей программы не работает. Записываешь в файл pid текущего процесса и продолжаешь работу программы. Как только программа завершается очищаешь файл.
Есть еще другой вариант: становишься на про слушку определенного порта. Если порт занят, то значит что программа уже работает, если нет то можешь работать дальше. Только как по мне это хреновый вариант.
А вообще не совсем понимаю, зачем тебе это нужно.
Почитай про include guard
-
АвторСообщения