Четверг, 21 Ноября 2024, 22:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Нужна помощь с 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! | Слава солнцу!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг