При запуске нашего аддона узла C ++ в Electron настройки / флаги с высоким разрешением не соблюдаются. Аддон узла работает сам по себе, пока не будет упакован с Electron.
Наш аддон узла отдельно, в другом процессе, но вызывается из Electron, создает новое окно с SDL, которое пытается включить DPI через SDL_WINDOW_ALLOW_HIGHDPI
Мы не используем new BrowserWindow
и не ожидаем, что Chrome изменит размер в этом случае!
Не работает в следующем сценарии:
- Запуск через
electron .
- Запуск после упакованного .dmg
Ключ в Info.plist High Resolution Capable
установлен в YES - электрон, кажется, автоматически генерируетпо умолчанию info.plist с ним. (Мы ничего не устанавливаем самостоятельно), и при этом мы не устанавливаем --extend-info
Ожидаемое поведение
Программа должна отображаться в режиме высокого разрешения и учитывать то, что передается в SDL
Например, мы должны получитьSDL_WINDOWEVENT, который говорит нам изменить размер текстуры на новую ширину и высоту.
Фактическое поведение
При перемещении окна программы (не созданного Электроном окна) на экран Retina (MacBook Pro),он не получает новый вывод для рендеринга, чтобы изменить его размер, и, по-видимому, не поддерживает высокий DPI
Когда мы запускаем аддон нашего узла отдельно, перемещение окна каждый раз переконфигурирует текстуру, как только мы достаточно переместим экранна другой экран DPI.
Воспроизведение
Установите следующие параметры в SDL:
// init
SDL_Window *window = SDL_CreateWindow(
"App name", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height,
SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI)
SDL_Renderer *renderer =
SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
// configure texture
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
int o_width = 0, o_height = 0;
int ret = SDL_GetRendererOutputSize(ctx->renderer, &o_width, &o_height);
if (ret != 0) {
throw runtime_error("Could not get output renderer size\n");
}
printf("Output renderer size: %dx%d\n", o_width, o_height);
Вопросы
- Как убедиться, что это работает в dev, когда мы делаем
electron .
- Как сделать эту успешную работу в упаковке?