ФлеймФорумСофт

Linux vs Windows [Holywar] (480 стр)

Страницы: 1479 480 481 482486 Следующая »
#7185
23:25, 16 окт 2024

skalogryz, делают... и смотрю через какую жопу они прошли... Это надо додуматься отключить возможность программисту отключать масштабирование. Пусть программист "любовью занимается" и вычисляет все координаты для нового "полноэкранного" приложения.

#7186
23:30, 16 окт 2024

Mirrel
насколько я знаю для гапи масштабирование не включали

#7187
23:43, 16 окт 2024

skalogryz, дело в другом. В том, что при создании окна, надо учитывать масштаб. Но при попытке создать при этом масштабе окно, винда кричит, что таких параметров нет. При попытке создать полноценное полноэкранное окно, оно расширяется за пределы экрана.

#7188
23:45, 16 окт 2024

Mirrel
> Я: Привет Винда!
> Windows (W): привет...
> Я: Как правильно работать при масштабировании?
> W: Берёшь функции, указываешь всё согласно масштабирования и делаешь как надо. Всё в документации.
> Я: А как мне сделать полноэкранное окно и чтоб масштабирование выключить?
> W: ни как.
> Я: Как тогда сделать полноэкранное приложение, чтоб с учётом масштабирования и не вылазило за рамки окна и было полноэкранным?
> W: иди на хрен.
Что значит никак? В винде нет как такового полноэкранного режима
А в целом очень даже как. Вот тут почитать можно как:
https://learn.microsoft.com/en-us/windows/win32/hidpi/high-dpi-de… nt-on-windows
Полноэкранный режим никаким боком к этому отношение не имеет. Все правила работают одинаково что для оконного режима, что для полноэкранного.
Кроме того в OpenGL нельзя добиться полноценного полноэкранного режима. Только сделать окно без рамок растянутое на весь экран. Но это НЕ полноэкранный режим.
Полноценный полноэкранный режим возможен только на композиторе. В OpenGL ничего в спецификации по этому поводу нет.

#7189
23:46, 16 окт 2024

Mirrel
а условие, что DPIAwareness нельзя использовать?

#7190
23:49, 16 окт 2024

skalogryz, масштабирование нельзя отключить вообще. Про что ты пишешь, это для самого приложения. Создали мы окно 800 на 600 и оно автоматически масштабировалось, не важно, включено там DPIAwareness или нет.

#7191
23:57, 16 окт 2024

Mirrel
> skalogryz, масштабирование нельзя отключить вообще.
Чушь. Можно и аж несколькими способами. Самый тру вей - в манифест добавить вот эти строки:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
        <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
    </windowsSettings>
</application>

НЕ тру вей - в самом начале работы приложения (еще до создания любого окна) позвать на Win8:
SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
На Win10:
SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);

После этого масштабирование виндой отключится, и тебе самому надо будет учитывать DPI монитора, чтобы на DPI = 200% все не стало милипиздрическим

#7192
(Правка: 0:05) 0:02, 17 окт 2024

MrShoor
> Чушь.
Поверни один монитор (желательно левый) и дай ему корректное расположение относительно второго монитора (книжное расположение). Правый сделай основным.
  Ну тут ещё один нюанс, можешь ещё не одинаковые мониторы поставить.
  В таких условиях можешь тестировать и потом писать "чушь".

  Когда что-то пишешь, ты должен проверить тысячу раз, что оно везде одинаково работает. А тебе главное чтоб у тебя работало, а на других насрать.


  Я добился "полноэкранного" приложения. Надо ещё подгонять всё...

#7193
0:13, 17 окт 2024

MrShoor
> SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
проверил, без изменений, масштабирование остаётся.

#7194
0:15, 17 окт 2024

Mirrel
> Когда что-то пишешь, ты должен проверить тысячу раз, что оно везде одинаково работает.
У меня есть несколько конфигураций, с разным DPI, с разным количеством мониторов, с разным из расположением и разрешением.
Более того, я работаю на таком зоопарке из мониторов. И первое с чем я сталкиваюсь - это с тем, что некоторые программисты вообще не знают как работать со всем этим, и их приложения косожопит в таких ситуациях.

> А тебе главное чтоб у тебя работало, а на других насрать.
Поверь, если у меня на всех моих конфигурациях заработает - то покроет 99% вообще всего что можно. А пока твой ZenGL не работает на моих конфигурациях (о чем я тебе и писал в другом треде). И сейчас я тебе объясняю как надо сделать, чтобы заработало хотя бы у меня.

> Я добился "полноэкранного" приложения.
Это не полноэкранное приложение. Это окно, растянутое на весь экран. Потому что ты используешь OpenGL, а по другому он не умеет. И такие "полноэкранные" приложения, которые через ChangeDisplaySettings перефигачивают разрешение рабочего стола, но при этом не уходят в эксклюзивный доступ - заслуживают отдельных лучей поноса. Потому что я получаю минусы от полного экрана в виде меняющегося разрешения, не получая никаких плюсов взамен. Только минусы.

#7195
0:19, 17 окт 2024

Mirrel
> > SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
> проверил, без изменений, масштабирование остаётся.
Значит у тебя либо в манифесте прописано что-то другое, либо ты (либо кто-то еще) сделал какой-то системный вызов для которого важен DPI. Поэтому дальше его поменять нельзя. Сделай нормально через манифест, это тру вей

#7196
0:20, 17 окт 2024

Лучше кстати такой манифест сделать:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>

Т.е. сразу V2 сделать для win10

#7197
(Правка: 0:32) 0:30, 17 окт 2024

MrShoor
> Это не полноэкранное приложение. Это окно, растянутое на весь экран.
они все такие, если не переключается режим.

> такие "полноэкранные" приложения, которые через ChangeDisplaySettings перефигачивают разрешение рабочего стола
не обязательно. Мы можем работать на том же разрешении, что и изначально, не переключаясь на другое разрешение.

> У меня есть несколько конфигураций, с разным DPI, с разным количеством мониторов, с разным из расположением и разрешением.
это не важно, если человек не понимает сути проблемы. Я могу поспорить, что даже после того как я решу все проблемы, ты будешь упорствовать что я не прав. Потому что вам важнее что вы правы. Но признать что вы можете допускать ошибки, вы просто не можете. )))

> Лучше кстати такой манифест сделать
благодарю, но я хочу без всяких "левых" прибамбасов.

  Нет у меня ни каких манифестов и не будет. Да, я не спорю, что в некоторых ситуациях манифесты более быстро настраиваемы. Но нет, я хочу нативное решение.

#7198
0:36, 17 окт 2024

Mirrel
> Но нет, я хочу нативное решение.
манифесты это и есть нативное решение
отсутствие манифеста говорит системе, что перед ней гавно мамонта, которому нужна жёсткая поддержка

#7199
0:39, 17 окт 2024

Mirrel
> они все такие, если не переключается режим.
Не все. В DXGI есть полноэкранный режим с эксклюзивным доступом. Он используется чтобы был нормальный adaptive vsync, а не недомерок как в OpenGL

> Мы можем работать на том же разрешении, что и изначально, не переключаясь на другое разрешение.
Угу, можем но не работаем. Потому что конкретно в твоем ZenGL ты колбасишь мой моинтор через ChangeDisplaySettings

> это не важно, если человек не понимает сути проблемы.
Так а какая суть проблемы то? Я вот хочу, чтобы на моём 4К мониторе в твоих демках у меня не было пикселей размером с кулак, потому что ты не смог прописать dpiaware в манифест. Можно мне не делать пиксели размером с кулак? Я например в своих приложениях не делаю такого. Причем это не какие-то тайные знания и грязные хаки. Это буквально то, что рекомендует делать MS у себя на msdn.

> ты будешь упорствовать что я не прав
Так ты же сейчас не прав.
1. Масштабирование можно отключить
2. Для этого есть конкретные механизмы (манифест)

> Но признать что вы можете допускать ошибки
Я могу допускать ошибки. Давай разберемся кто из нас сейчас ошибается. Вот я говорю что масштабирование виндой отключается, ты говоришь, что нет. У меня есть приложение, которое работает с отлкюченным масштабированием. Это пруф с моей стороны.

Страницы: 1479 480 481 482486 Следующая »
ФлеймФорумСофт