![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,380 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 322 раз(а) ![]() |
Расскажу я вам грустную историю, но со счастливым концом.
Лет 5 назад купил я Samsung SyncMaster 931c (это LCD-монитор) вместо своего старого CRT-монитора CTX'99 (точную модель не помню), который вдруг начинал показывать фиолетовые полосы на экране. Всё было отлично с SyncMaster 931c, но в разрешениях 320x200 и 640x400 монитор отключался и выдавал табличку, что выбранное разрешение и/или частота не поддерживаются. И если, скажем, для D3D игры это можно было как-то забодать через настройки nVIDIA (там можно задать произвольную частоту обновления экрана), то для приложений использующих ChangeDisplaySettings() это была труба (практически все приложения использующие SDL - например, DOSBox). Т.е. выходов было три: - менять разрешение программы (если можно было); - работать в оконном режиме (если программа поддерживала оконный режим); - ломать программу, чтобы выставлялось другое разрешение (например 640x480). Эти два разрешения требовались нечасто, так что головняка особого с ними не было, но сегодня я понял, что меня это уже бесит. Тогда я решил таки забороть эту проблему и разбил её на две подзадачи: 1) Разобраться есть ли хоть какая-то частота развёртки с которой монитор работает в указанных разрешениях. 2) Разобраться можно ли как-то указать в системе какую частоту развёртки использовать, если приложение не указало свою. Для решения первой подзадачи написал я небольшую программку, где при помощи уже упомянутой ChangeDisplaySettings() и флага DM_DISPLAYFREQUENCY (там было ещё три - ширина, высота и BPP) начал перебирать все частоты от 60 до 100 при разрешении 640x400 и 32 битах (битность, на самом деле, не так уж и важна). На удивление оказалось что монитор работает в этих режимах (320x200 и 640x400) при 70 Hz, в то время как в остальных - и на 60 Hz без проблем (которое, к слову, по умолчанию и выставлялось). Отлично! Переходим ко второй подзадаче. Тут мне пришлось изрядно нагуглиться, т.к. что именно мне нужно я толком не знал - сделал только предположение, что это какая-то настройка в реестре. И, на удивление, таки нашлось это и это. Приведу пошаговую инструкцию с примерами для тех, кто решился повторить подвиг. Внимание! Здесь и далее параметры выделенные жирным будут специфичны для каждого отдельного компьютера, а тут они приведены для примера! 1) Лезем в ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY Далее находим там свой монитор - у меня это был "SAMSUNG" - раскрываем ветку и там будет несколько параметров. У меня их было 4 штуки, так что я выбрал последний и щёлкнул на нём. 2) Внутри нас интересует строчка "Driver" равная некоему GUID'у. У меня там было: "Driver"="{01234567-89AB-CDEF-0123-456789ABCDEF}\0003" Записываем куда-нибудь эту строчку. 3) Далее лезем сюда: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class После чего находим значение из "Driver" п.2 и раскрываем его, затем создаём там подраздел "MODES", а внутри него ещё один подраздел "640,400". В итоге должно получиться что-то типа: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{01234567-89AB-CDEF-0123-456789ABCDEF}\0003\MODES\640,400 Создаём там текстовый параметр "Mode1", куда вписываем диапазоны разрешённых частот обновления (т.к. нам известна только нижняя - 70, то ей и ограничиваем): "Mode1"="70-70,70-70,+,+" 4) Проделываем тоже самое для 320x200 в том же подразделе "MODES". 5) Готово - всё будет работать, даже перегружаться не нужно. Если не сработало - значит в п.1 был выбран не тот монитор (ветка GUID в п.3 будет нерабочая). |
![]() ![]() |
Siberian GRemlin |
![]()
Сообщение
#2
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 222 раз(а) ![]() |
Несколько лет назад пришлось менять монитор. В магазинах мне либо не нравилась цена, либо качество корпуса, выносной БП 0_0 или ещё что-нибудь. В итоге я купил себе ЖК телек со светодиодной подсветкой «Samsung». Проблем нет вообще никаких ни с какими разрешениями, корпус из качественных материалов (сделано в России), БП внутри, цена в разы меньше чем за мониторы аналогичного размера. Заметил, что изображение чётче через обычный кабель от монитора, нежели через HDMI, причём звук легко подрубается через обычный шнур от звуковухи. Плюс куча видео и аудио входов и весь функционал современного телека.
Спасибо сказали:
|
![]() ![]() |
Упрощённая версия | Сейчас: 31st August 2025 - 00:52 |