Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование графики
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
gres8
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 61
1

SDL2 синхронизация кадров изображения

18.06.2017, 00:49. Просмотров 533. Ответов 5
Метки нет (Все метки)

Не могу найти в описании включения выключения синхронизации

знаю как включить при старте
C++
1
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
или с без синхронизации
C++
1
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED );
но как ее во время работы приложения отключать в SFML такая возможность есть (setVerticalSyncEnabled(1 или 0)

в SDL2 не нашел
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2017, 00:49
Ответы с готовыми решениями:

SFML VS SDL2
что лучше? SFML или SDL2? (интересно просто узнать мнение программистов на форуме)

Вертикальная синхронизация sdl2 + opengl
По умолчанию не включена. Как включить?

SDL2 opengl
Не могу запустить OpenGL на SDL2 #pragma comment(lib, "./lib/SDL2main.lib") #pragma...

SDL2 BlitScaled и прозрачность - масштабирование изображения
Здравствуйте. Пару дней назад начал работать с SDL2, возникла некоторая проблема, никак не могу...

Сделать анимацию облаков из 1493 кадров размером 1920х1080 со скоростью 25 кадров в секунду
Пытаюсь сделать анимацию облаков из 1493 кадров размером 1920х1080 со скоростью 25 кадров в...

5
SupremeEP
3 / 3 / 2
Регистрация: 01.12.2015
Сообщений: 36
Завершенные тесты: 1
31.08.2017, 01:27 2
Зачем? Ты можешь просто (если хочешь) удалить предыдущий рендерер и создать новый с другими флагами. Окно у тебя не закроется, и всё будет хорошо
0
gres8
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 61
31.08.2017, 20:10  [ТС] 3
Сделал но пропала вся графика .... ндо заного пергружать
или можно как то переопределить
0
SupremeEP
3 / 3 / 2
Регистрация: 01.12.2015
Сообщений: 36
Завершенные тесты: 1
31.08.2017, 21:49 4
Так, забыл, как устроен SDL 2... Прости, не надо пересоздавать рендереры, ты можешь просто использовать "подсказки":
C++
1
2
SDL_SetHint(SDL_HINT_RENDER_VSYNC, "1"); // Включить вертикальную синхронизацию
SDL_SetHint(SDL_HINT_RENDER_VSYNC, "0"); // Отключить вертикальную синхронизацию
В документации написано, что эти значения "перекрывают" те, что ты задаёшь в SDL_CreateRenderer()
0
gres8
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 61
01.09.2017, 21:18  [ТС] 5
SDL_SetHint(SDL_HINT_RENDER_VSYNC, "1"); // Включить вертикальную синхронизацию
SDL_SetHint(SDL_HINT_RENDER_VSYNC, "0"); // Отключить вертикальную синхронизацию

попробовал
но все равно после создания рендера уже обратно не переключатся (((
то есть до создания хинты работают
например выставил синхронизацию она есть
потом SDL_SetHint(SDL_HINT_RENDER_VSYNC, "0" на отсключает
и наоборот создал рендер с отключенной синхрой
SDL_SetHint(SDL_HINT_RENDER_VSYNC, "1" ее не включает
0
SupremeEP
3 / 3 / 2
Регистрация: 01.12.2015
Сообщений: 36
Завершенные тесты: 1
02.09.2017, 23:22 6
Мда... Пошарил я по форумам и вот, что нашёл:
1) Ты не можешь включить/выключить vsync после создания рендерера в sdl без использования OpenGL.
2) Vsync зависит от настроек видеокарты и не всегда может сработать.
3) После удаления рендерера, удаляются все загруженные тобой текстуры (причина, по которой у тебя ничего не отображалось).

По сути, если тебе нужен vsync, то ты можешь сам контролировать частоту кадров в секунду:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
while (!gameLoop->done)
{
    int start = SDL_GetTicks();
    gameLoop->update();
    int time = SDL_GetTicks() - start;
    if (time < 0) continue; // if time is negative, the time probably overflew, so continue asap
 
    int sleepTime = gameLoop->millisecondsForFrame - time;
    if (sleepTime > 0)
    {
        SDL_Delay(sleepTime);
    }
}
Так, что можешь просто игнорировать пост 4.
1
02.09.2017, 23:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2017, 23:22

Создание кадров с периодичностью 1 секунда и последующая обработка кадров
Добрый день! Я в матлабе новичок и хотел бы попросить помощи для написания кода. Мне нужно, чтобы...

Создать приложение, которое при проигрывании фиксированных кадров выдает звуковой сигнал. Позиции кадров выбираются через визуальный интерфейс, про
Создать приложение, которое при проигрывании фиксированных кадров выдает звуковой сигнал. Позиции...

Модуль EVO II синхронизация 50гц, На какой ножке контроллера синхронизация шим двигателя?
Частый дефект для модулей EVO II с коллекторным двигателем - нет управления двигателем при помехах...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru