HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- Полноэкранный режим DirectX (https://hlfx.ru/forum/showthread.php?threadid=6090)
Отправлено Дядя Миша 22-05-2024 в 13:34:
Цитата:
FiEctro писал:
Хотите сказать что CRT не может рисовать безрамочное окно родного разрешения или что?
Может конечно. Но тогда так делать было непринято.
Цитата:
FiEctro писал:
Лучше покажите пример как создавать нормально безрамочное окно по канонам.
Создавай рамочное.
C++ Source Code:
1 | stylebits = WS_POPUP|WS_VISIBLE|WS_BORDER|WS_CAPTION; |
2 | exstyle = WS_EX_TOPMOST; |
3 | y = -( GetSystemMetrics( SM_CYCAPTION ) + 3 ); |
Число три это магическая константа, подобранная экспериментальным путём. x, y это - смещение окна. Как раз встанет точно по размеру экрана.
У этого окна будет шапка, но она окажется за пределами экрана и никто её не увидит. Если делать настоящее безрамочное окно - оно будет как-то похитрому глючить не то на старых, не то на новых виндах.
И это не только моё наблюдение. Размер окна, ессно равен разрешению экрана.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено a1batross 22-05-2024 в 21:24:
Цитата:
Дядя Миша писал:
А прямо на матрице распаяна
Далеко не всегда так. Я работаю со встраиваемыми системами и почти всегда никакого EDID не получаю (а хотелось бы, сильно упростило часть работы). Нативное разрешение и границы ожидаемого pixclk просто описаны в даташите на матрицу. Как хочешь, так и выкручивайся =/
Но вообще да, тот факт, что оно _обычно_ не связано физически позволяет его положить куда угодно или забить туда любую информацию.
Цитата:
Дядя Миша писал:
Размер пикселя определяется диаметром щели в маске.
Интересно. Как же тогда делали нестандартное разрешение?
Цитата:
FiEctro писал:
Лучше покажите пример как создавать нормально безрамочное окно по канонам.
Могу только без канонов. Недавно безрамочное окно запилил в наш форк, но там саму фичу предоставляет SDL. Лежит в engine/platform/sdl/vid_sdl.c в сорцах.__________________
Xash3D FWGS форк
Отправлено Дядя Миша 23-05-2024 в 05:31:
Цитата:
a1batross писал:
Я работаю со встраиваемыми системами и почти всегда никакого EDID не получаю
Эта микросхемка не нужна для правильной работы матрицы, поэтому запросто может отсутствовать. Она просто торчит в сторону LVDS-разъема чтобы пользователь мог её прочитать.
Цитата:
a1batross писал:
Интересно. Как же тогда делали нестандартное разрешение?
Я наверное немного неверно выразился. Минимальный размер пикселя определяется диаметром щели в маске. Так-то размер пикселя - вполне актуальный параметр для CRT. Разрешения масштабировались просто за счёт физического движения луча, он зажигал несколько пикселей одним цветом.
Но вообще если приблизить лицо к CRT экрану, это выглядит довольно забавно. Особенно на кинескопах с триадами, вместо инлайнов. Там видно, что в триадах светятся все три цвета, причём при приближении практически невозможно разобрать какие ярче, а какие темнее.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Unit 04-07-2024 в 06:56:
Re: Полноэкранный режим DirectX
Цитата:
FiEctro писал:
Пытаюсь разобраться с фуллскрином в D3D, и вроде всё работает, но только с определенными разрешениями, а вот другие вроде 320х240, 512х512 ломаются. С чем это связано? Даже если я отфильтрую рабочие разрешения, где гарантии что на других машинах они не будут ломаться? Пример на который я ориентировался, я приложил ниже.
Нужно получить список доступных разрешений, далее из этого списка выбрать подходящий, что-то типа этого:
C++ Source Code:
9 | std::vector<DisplayMode> m_modes; |
14 | if (EnumDisplaySettings(nullptr, static_cast<DWORD>(m_modes.size()), &deviceMode) != TRUE) { |
18 | DisplayMode displayMode; |
19 | displayMode.width = static_cast<uint32_t>(deviceMode.dmPelsWidth); |
20 | displayMode.height = static_cast<uint32_t>(deviceMode.dmPelsHeight); |
21 | displayMode.frequency = static_cast<uint32_t>(deviceMode.dmDisplayFrequency); |
23 | m_modes.push_back(displayMode); |
Цитата:
Дядя Миша писал:
Число три это магическая константа, подобранная экспериментальным путём.
Скорее всего это число - размер верхнего фрейма, за который тянут мышкой при изменении размеров, в разных темах и версиях Windows могут отличаться значения.
Его можно получить:
C++ Source Code:
GetSystemMetrics(SM_CYFRAME) |
Отправлено Дядя Миша 04-07-2024 в 07:42:
Цитата:
Unit писал:
Скорее всего это число - размер верхнего фрейма, за который тянут мышкой
Да, возможно.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'