The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск Wine 3.6, opennews (ok), 14-Апр-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


40. "Выпуск Wine 3.6"  +8 +/
Сообщение от Аноним84701 (ok), 15-Апр-18, 00:51 
> А есть ли возможность в wine, возможно даже с помощью сторонних утилит,
> чтобы при запуске старого полноэкранного приложения, рассчитанного на соотношение сторон
> 4:3 и низкое разрешение, при запуске на FullHD мониторе в полноэкранном
> режиме приложение не растягивалось на весь экран, искажая пропорции, а растягивалось
> по ширине по центру с сохранением пропорций,

Когда зимой решил "понастольгировать" и перепройти первый старкрафт, использовал такой костыль:


xrandr --output HDMI-2 --mode 640x480 --scale 1.333333333334x1 --panning 640x480

Это для монитора 1920x1080.
scale расчитывается из разницы соотношения сторон:
640/480 = 4/3 = 12/9
1920/1080=16/9
12 = 16 / 1.333333333

Можно еще попробовать в оконном режиме "увеличение специальными средствами":
xrandr --output HDMI-2 --scale 0.45x0.45
тоже - смотрим высоту и расчитываем нужное увеличение.

Само собой, обратно переключать придется тоже ручками, хотя никто не мешает обернуть все это в трехстрочный сркипт.

А вообще, xrandr --verbose и смотреть для вывода:


scaling mode: Full aspect
        supported: None, Full, Center, Full aspect

xrandr --output FOO --set "scaling mode" "Full aspect"

У меня, к сожалению, интеграшка может выдавать Full Aspect только на LVDS - пришлось изворачиваться и костылять.

Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

43. "Выпуск Wine 3.6"  +3 +/
Сообщение от Ilya Indigo (ok), 15-Апр-18, 03:25 
> xrandr --output HDMI-2 --mode 640x480 --scale 1.333333333334x1 --panning 640x480

Благодарю! За наводку :-)
Оно работало, но не центрировало.
Погуглил...
https://unix.stackexchange.com/questions/220387/how-to-set-s...

xrandr --output VGA1 --mode 1024x768 --panning 1024x768 --transform 1.33333333,0,-171,0,1,0,0,0,1

Где -171 = -round((1024 * 1.3333333 - 1024) / 2)

И это то что нужно! С центровкой :-)
Возвращает назад

xrandr --output VGA1 --mode 1920x1080 --panning 1920x1080 --scale 1x1

Итого вот то что мне нужно:
xrandr --output VGA1 --mode 1024x768 --panning 1024x768 --transform 1.33333333,0,-171,0,1,0,0,0,1 && wine /ILYA/Games/ER/Legacy\ Interactive/ER/ER.exe ; xrandr --output VGA1 --mode 1920x1080 --panning 1920x1080 --scale 1x1

А если ещё и удобные псевдонимы создать или даже ф-ию,которая будет принимать что запустить, в каком разрешении и на какое разрешение вернуть после выхода... то это и вовсе в точности что я хотел. Не ужели разработчики вайна до такого не додумались?
Я же чуял одним местом, что это по любому можно сделать нативно! :-)

Ответить | Правка | Наверх | Cообщить модератору

54. "Выпуск Wine 3.6"  +/
Сообщение от Jojoker (?), 15-Апр-18, 13:32 
Может им написать?
Ответить | Правка | Наверх | Cообщить модератору

97. "Выпуск Wine 3.6"  +/
Сообщение от Ilya Indigo (ok), 06-Май-18, 05:24 
> Может им написать?

https://forum.winehq.org/viewtopic.php?f=8&t=30496
Думаю я им не первый об этом пишу.

Ответить | Правка | Наверх | Cообщить модератору

62. "Выпуск Wine 3.6"  +1 +/
Сообщение от Аноним84701 (ok), 15-Апр-18, 15:48 
> Благодарю! За наводку :-)
> Оно работало, но не центрировало.
> Погуглил...

Пожалуйста. Хотя центрирование, по моему, для эстетов (но у меня рамка монитора тоже черная) :)

> Я же чуял одним местом, что это по любому можно сделать нативно! :-)

(X)Randr с последними расширениями вообще чрезвычайно мощная штука - сам удивился, когда в ман повнимательнее глянул.

Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

63. "Выпуск Wine 3.6"  +/
Сообщение от Ilya Indigo (ok), 15-Апр-18, 16:25 
> сам удивился, когда в ман повнимательнее глянул.

Я ожидал в man увидеть или --offset или дополнительные опции к --scale для смещения.
А вот синтаксис --transorm для меня вовсе не понятен и не очевиден.

--transform a,b,c,d,e,f,g,h,i
              Specifies  a transformation matrix to apply on the output.  A bilinear
              filter is selected automatically unless the --filter parameter is also
              specified.  The mathematical form corresponds to:
                     a b c
                     d e f
                     g h i
              The  transformation  is  based  on homogeneous coordinates. The matrix
              multiplied by the coordinate vector of a pixel of the output gives the
              transformed  coordinate vector of a pixel in the graphic buffer.  More
              precisely, the vector (x y) of the output pixel is extended to 3  val-
              ues  (x  y  w),  with 1 as the w coordinate and multiplied against the
              matrix. The final device coordinates of the pixel are then  calculated
              with the so-called homogenic division by the transformed w coordinate.
              In other words, the device coordinates  (x'  y')  of  the  transformed
              pixel are:
                     x' = (ax + by + c) / w'   and
                     y' = (dx + ey + f) / w'   ,
                     with  w' = (gx + hy + i)  .

Но главное - для себя проблему решил. :-)
Ответить | Правка | Наверх | Cообщить модератору

74. "Выпуск Wine 3.6"  +/
Сообщение от Ilya Indigo (ok), 16-Апр-18, 03:02 
> Возвращает назад
> xrandr --output VGA1 --mode 1920x1080 --panning 1920x1080 --scale 1x1

Поправка, возвращать назад нужно с --panning 0x0:

xrandr --output VGA1 --mode 1920x1080 --panning 0x0 --scale 1x1

Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

96. "Выпуск Wine 3.6"  +/
Сообщение от Ilya Indigo (ok), 06-Май-18, 05:22 
> --mode 1920x1080

А для этого есть прекрасная опция --auto, которая устанавливает рекомендуемый режим.

Ответить | Правка | Наверх | Cообщить модератору

95. "Выпуск Wine 3.6"  +/
Сообщение от Ilya Indigo (ok), 06-Май-18, 05:20 
Окончательное решение у меня такое.
Этот скрипт кладётся в директорию с исполняемым файлом игры и называется также как этот файл, но без ".exe".
В скрипте нужно раскомментировать нужное разрешение и закомментировать все остальные.
#!/bin/sh
vga=`xrandr | grep -P " connected (primary )?\d+" | sed -e "s/\(\w\+\) .*/\1/"`
if xrandr --output $vga --set "scaling mode" "Full aspect" 2>/dev/null;then
    wine "$0".exe
else
    #res=640x480 && off=107
    #res=800x600 && off=133
    #res=1024x768 && off=171
    #res=1152x864 && off=192
    #res=1280x960 && off=213
    res=1440x1080 && off=240
    xrandr --output $vga --mode $res --panning $res --transform 1.33333333,0,-$off,0,1,0,0,0,1 && wine "$0".exe ; xrandr --output $vga --auto --panning 0x0 --scale 1x1
fi

Также нужно проверить все ли режимы поддерживает Ваш монитор?
xrandr

Если нужного режима нет в списке режимов, то его можно добавить вручную отредактировав xorg.conf.

/etc/X11/xorg.conf.d/50-monitor.conf

Section "Monitor"
    Identifier "VGA1"
    Modeline "1280x960"  101.25  1280 1360 1488 1696  960 963 967 996 -hsync +vsync
    Modeline "1280x960"  130.00  1280 1368 1504 1728  960 963 967 1005 -hsync +vsync
    Modeline "1440x1080"  129.00  1440 1528 1680 1920  1080 1083 1087 1120 -hsync +vsync
EndSection

Где Identifier "VGA1" это имя вывода, определяется вызовом xradr.
Modeline ... параметры добавляемого режима.
Эти параметры определяются вызовом cvt с параметрами разрешения и частоты.
"_60.00" из первого параметра нужно удалить.
cvt 1280 960 60
cvt 1280 960 75
cvt 1440 1080 60

Если монитор поддерживает "scaling mode" "Full aspect" тогда файл запускается через wine без изменений.
Если нет, тогда экран корректируется через xrandr.
И потом экран возвращается в нормально состояние.
Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

98. "Выпуск Wine 3.6"  +/
Сообщение от Ilya Indigo (ok), 06-Май-18, 05:27 
> У меня, к сожалению, интеграшка может выдавать Full Aspect только на LVDS
> - пришлось изворачиваться и костылять.

У меня аналогично на обоих ноутах.
А Вы уверены что тут дело в интеграшке, а не в самом мониторе?

Ответить | Правка | К родителю #40 | Наверх | Cообщить модератору

99. "Выпуск Wine 3.6"  +/
Сообщение от Аноним84701 (ok), 06-Май-18, 14:15 
> У меня аналогично на обоих ноутах.
> А Вы уверены что тут дело в интеграшке, а не в самом мониторе?

https://bugs.freedesktop.org/show_bug.cgi?id=90989
> Can't set screen scaling modes for external monitors.

Да и не знаю, как монитор может "воспротивиться" ведь, емнип, на вход будет идти такая же картинка, как и раньше. Наоборот, нет надобности переключать режим/разрешение.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру