Огромное падение частоты кадров, когда я добавляю большое изображение в текстуру sdl

Таким образом, когда я добавляю меньшее изображение на экран sdl, абсолютно нет падения кадров в секунду, но затем я добавил фон sdl с деталями и всем остальным на весь экран. Затем я получаю падение с 350 до 150 кадров в секунду. Может быть, есть способ исправить это? Добавить эту текстуру на другой экран или что-то в этом роде?

Вот как я добавляю это изображение:

При загрузке моей игры:

SDL_Texture* texture;
SDL_Rect rect;
texture = IMG_LoadTexture(renderer, "data/interiors/baznycia.png");
rect.x = 0;
rect.y = 0;
rect.w = screenWidth;
rect.h = screenHight;

В моем игровом цикле:

SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, texture, NULL, &rect);
SDL_RenderPresent(renderer);

person lollypap54    schedule 07.08.2016    source источник
comment
Пожалуйста, проверьте, разрешаете ли вы SDL использовать аппаратное обеспечение для ускорения 2D-графики. Возможно, SDL использует только программный рендеринг. wiki.libsdl.org/SDL_CreateRenderer#flags   -  person nshct    schedule 07.08.2016
comment
@nshct Я использую SDL_RENDERER_ACCELERATED, поэтому использую аппаратное обеспечение. Пытался поиграть с этими флагами сейчас, поэтому SDL_RENDERER_ACCELERATED дает тот же fps, что и SDL_RENDERER_TARGETTEXTURE, а другие просто падают до 10 кадров в секунду или что-то в этом роде (когда я использую их, нет счетчика из программы fraps)   -  person lollypap54    schedule 07.08.2016
comment
Одна вещь, которую я помню, это то, что иногда формат текстуры (например, как цвета расположены в памяти, размер цветовых полей...) отличается от формата вашего экрана, поэтому каждый раз, когда вы хотите что-то скопировать, он имеет быть переведены. Вы можете попытаться скопировать свое изображение в новую текстуру, которая использует тот же формат, что и ваш экран (вы можете указать это в CreateTexture), и попытаться отобразить это на экране в каждом кадре.   -  person nshct    schedule 07.08.2016
comment
@nshct Черт! Я изменил свою картинку только на размер моей игры, и частота кадров увеличилась до 250 кадров в секунду! Пожалуйста, напишите это как ответ сейчас, и я подтвержу это, чтобы другие люди могли легко найти решение этой проблемы. Этого количества кадров в секунду достаточно :D Спасибо за помощь!   -  person lollypap54    schedule 07.08.2016


Ответы (1)


В вашем случае, поскольку вы рисуете фоновое изображение игры с постоянным размером окна, может быть полезно сопоставить размеры вашего изображения с размером экрана, чтобы избежать применения интерполяции к вашей текстуре (что требует времени вычислений и, следовательно, может ограничьте свой FPS)

Кроме того, иногда несоответствие формата пикселя текстуры может привести к ненужным преобразованиям текстуры, поэтому убедитесь, что вы используете правильный формат прежде чем рисовать его на экране.

person nshct    schedule 07.08.2016