Нужна помощь с SFML!!!
| |
jone157 | Дата: Среда, 18 Февраля 2015, 21:18 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Доброе время суток, может кто знает как можно сделать программу на SFML более оптимизированной. Буквально при отрисовке нескольких кнопок и спрайтов фпс уже падает до 60, а если прорисовать что-то сложное, то программа выдаёт и вовсе 20. Что делать? Может кто знает как решить проблему, раньше вроде не замечал такого резкого падения фпс.
|
|
| |
Saitei | Дата: Среда, 18 Февраля 2015, 22:06 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Цитата jone157 ( ) Доброе время суток, может кто знает как можно сделать программу на SFML более оптимизированной. Буквально при отрисовке нескольких кнопок и спрайтов фпс уже падает до 60, а если прорисовать что-то сложное, то программа выдаёт и вовсе 20. Что делать? Может кто знает как решить проблему, раньше вроде не замечал такого резкого падения фпс. Цитата jone157 ( ) Нужна помощь с SFML!!! Браток, мы не экстрасенсы!!!
|
|
| |
jone157 | Дата: Среда, 18 Февраля 2015, 22:23 | Сообщение # 3 |
участник
Сейчас нет на сайте
| Saitei, Проблема в том, что в приложении с использованием SFML фпс низкое и я бы хотел узнать, что может повлиять на это, либо узнать другие подходящие библиотеки для работы с 2D графикой.
|
|
| |
Saitei | Дата: Среда, 18 Февраля 2015, 22:28 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| jone157, я не видел кода и не могу тебе ничего сказать.
|
|
| |
tracer07 | Дата: Среда, 18 Февраля 2015, 22:28 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Скинь кусок кода который отвечает за рисование спрайта хотя бы
|
|
| |
jone157 | Дата: Среда, 18 Февраля 2015, 22:34 | Сообщение # 6 |
участник
Сейчас нет на сайте
| tracer07, Там не в коде проблема, я специально проверял создав новый проект и отрисовав несколько фигур со стандартными алгаритмами. Такое чувство, что в железе проблемы, но вроде бы отрисовку 10 простых фигур должно тянуть. Возможно проблема в самой библиотеке, точнее в данной её версии.
|
|
| |
Saitei | Дата: Среда, 18 Февраля 2015, 22:37 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| Цитата jone157 ( ) tracer07, Там не в коде проблема, я специально проверял создав новый проект и отрисовав несколько фигур со стандартными алгаритмами. Такое чувство, что в железе проблемы, но вроде бы отрисовку 10 простых фигур должно тянуть. Возможно проблема в самой библиотеке, точнее в данной её версии. алгаритмами, ага. Может быть всё что угодно. Без кода я могу лишь развести руками.
|
|
| |
Kos94ok | Дата: Среда, 18 Февраля 2015, 22:45 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| jone157, Работаю с SFML уже почти год, никаких проблем с фпс и отрисовкой не замечал (если речь не идет о тексте, он медленный, да, но не настолько). Кидай код проекта, разберемся. Не надо ругать библиотеку за то, в чем она не виновата.
|
|
| |
tracer07 | Дата: Среда, 18 Февраля 2015, 22:50 | Сообщение # 9 |
постоянный участник
Сейчас нет на сайте
| Цитата jone157 ( ) tracer07, Там не в коде проблема, я специально проверял создав новый проект и отрисовав несколько фигур со стандартными алгаритмами. Такое чувство, что в железе проблемы, но вроде бы отрисовку 10 простых фигур должно тянуть. Возможно проблема в самой библиотеке, точнее в данной её версии.
Может действительно дело в железе? Или быть может проблема в драйверах? давно обновлял? какая ОС у тебя?
|
|
| |
jone157 | Дата: Среда, 18 Февраля 2015, 22:59 | Сообщение # 10 |
участник
Сейчас нет на сайте
| tracer07, Kos94ok, Saitei, tracer07,
void draw_c(float x, float y, float xr, float yr, int c1, int c2, int c3, int alpha, bool ln, int lnc1, int lnc2, int lnc3, int alpha2, RenderWindow &WIN){ RectangleShape cube; cube.setPosition(x,y); cube.setSize(Vector2f(xr,yr)); cube.setFillColor(Color(c1,c2,c3,alpha)); cube.setOutlineThickness(ln); cube.setOutlineColor(Color(lnc1,lnc2,lnc3,alpha2)); WIN.draw(cube); }
Для отрисовки писал такую функцию Проблема в том, что у друга тоже фпс проседает и не понятно почему.
|
|
| |
Kos94ok | Дата: Среда, 18 Февраля 2015, 23:03 | Сообщение # 11 |
почетный гость
Сейчас нет на сайте
| jone157, Я сказал, что нам нужен код проекта, а не код одной функции. Мало ли где у тебя там ошибка. Вообще было бы идеально, если бы ты скинул архив с полным проектом. А т.к. фпс проседает и у твоего друга, то проблема именно в коде. Собсно, терпеливо жду код. ... Все еще жду.
|
|
| |
TreeLoys | Дата: Среда, 18 Февраля 2015, 23:21 | Сообщение # 12 |
частый гость
Сейчас нет на сайте
| Братка, чисто ради прикола 200 кнопок зафигарил. Не поверишь, фпс 4000 и не падает)
http://kfni.ho.ua/ - мой сайт по урокам SFML
|
|
| |
Эргалон | Дата: Среда, 18 Февраля 2015, 23:41 | Сообщение # 13 |
Вездесущий
Сейчас нет на сайте
| У меня создается впечатление, что дело в повторной отрисовке одних и тех же объектов. Когда тебе нужно отрисовать один, где-то в функции алгоритм выполняется несколько раз, накладывая объект на объект, от того может понижаться фпс. Или какая-то функция постоянно создает эти объекты, накладывая поверх других. Хотя тогда бы наверно фпс падал постепенно. Хз, у меня фпс как-то в игре упал, потому что я по ошибке повторно прогрузил локацию, поверх другой
Кубариум Rise of the dark lords
Сообщение отредактировал Эргалон - Среда, 18 Февраля 2015, 23:41 |
|
| |
jone157 | Дата: Среда, 04 Марта 2015, 18:09 | Сообщение # 14 |
участник
Сейчас нет на сайте
| Эргалон, Kos94ok, Я же объяснил, что код выглядел примерно так и дело во все не в нём, так как раньше всё работало нормально:
void draw_c(float x, float y, float xr, float yr, int c1, int c2, int c3, int alpha, bool ln, int lnc1, int lnc2, int lnc3, int alpha2, RenderWindow &WIN){ RectangleShape cube; cube.setPosition(x,y); cube.setSize(Vector2f(xr,yr)); cube.setFillColor(Color(c1,c2,c3,alpha)); cube.setOutlineThickness(ln); cube.setOutlineColor(Color(lnc1,lnc2,lnc3,alpha2)); WIN.draw(cube); }
int main(int argc, char* argv[]){ message text_box; char KB = ' '; int W = false; int A = false; int S = false; int D = false; int page = 0; int langvich = 0; bool KBP = false; bool KBB = false; int WindowX = 640; int WindowY = 640; string Nickname = ""; string Age = ""; RenderWindow window(VideoMode(WindowX, WindowY), "ChatX", Style::Titlebar);
while (window.isOpen()){ draw_c(10,10,10,10,255,255,255,255,true,255,255,255,255, window) window.display(); window.clear(Color::Color(10, 10, 10, 255));
} return 0;
}
|
|
| |
zombihello | Дата: Среда, 04 Мая 2016, 00:08 | Сообщение # 15 |
был не раз
Сейчас нет на сайте
| Если эта тема еще актуальна, то вот эти строки
Цитата jone157 ( ) while (window.isOpen()){ draw_c(10,10,10,10,255,255,255,255,true,255,255,255,255, window) window.display(); window.clear(Color::Color(10, 10, 10, 255));
}
надо немного подправить, т.е сделать вот так
Код while (window.isOpen()){ window.clear(Color(10, 10, 10)); draw_c(10,10,10,10,255,255,255,255,true,255,255,255,255, window); window.display(); }
короче говоря метод clear должен идти перед отрисовкой уровня
P.S: Я твой код так подправил и у меня FPS зашкаливал
Laudate sol! | Praise The Sun! | Слава солнцу!
|
|
| |
|