CC>Я вот времена когда приходилось под каждую видюху свой код писать и её глюки отслеживать и поддерживать вспоминаю с содроганием.
Как будто сейчас что-то поменялось.
Никогда не встречал игр, работающих только на Nvidia? Или не работающих на Radeon? Их полно.
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, alpha21264, Вы писали:
A>>Я подозреваю, что авторы Автокада не просто так поступили таким образом, A>>на первый взгляд более трудоёмким. Наверное использовать драйверы было ещё труднее. E>Во первых, в те времена драйверов не было. И разработчики чтоб выполнить простейшие операции вроде нарисовать линию и вывести Hello World корячились и реализовывали весь функционал этого рисования, зачастую бразенхеймом. Во вторых, видеокарты тогда были достаточно примитивные, и не умели даже рисовать векторные шрифты. Потому писали напрямую в видеопамять в графическом режиме. В третьих, в те времена все работало под Dos. Программа была запущена одна, и эта одна программа обращалась напрямую с устройствами ввода вывода. В четвертых, в те времена более менее стандартами были CGA, EGA, VGA, Hercules. Потом появилась Vesa и SVGA. По современным стандартам те видеокарты были примитивные до неприличия. Даже на SVGA поддерживались крайне низкие разрешения вроде 1024*768. Но даже на этих разрешениях тормозило все неимоверно. Если через VESA все делать на современной видеокарте, охрененно заметны тормоза даже на современных процессорах.
640 x 480 = 307 200 пикселей (ничего не тормозило)
800 x 600 = 480 000
1024 x 762 = 786 432
1920 x 1080 = 2 073 600 пикселей.
Итого, что мы видим?
Нынешний размер экрана в 6.75 раз больше того, что был в прошлом веке.
Всего в семь раз! А процессоры с тех пор во сколько раз ускорились?
Экран 640 x 480 заполнял процессор intel-286 12 MHz!
Напомню, что он в среднем тратил 5 тактов на выполнение одной команды.
Сейчас мы имеем процессоры в 3 MHz, 4 ядра и 4 команды за такт.
Это более, чем в тысячу раз быстрее.
Вы говорите про какие-то тормоза из-за высоких разрешений.
Вы о чём вообще?
Остальное скипнул, потому что оно не имеет смысла не разобравшись с этим.
Здравствуйте, alpha21264, Вы писали:
A>Экран 640 x 480 заполнял процессор intel-286 12 MHz!
Заполнить статический экран это не проблема. Проблема сделать программным образом хотя бы плавный скроллинг. Во времена Windows 3.1, если что, при перетаскивании окна перетаскивалась только контуры окна. Нажимаешь мышку, передвигаешь контур, отпускаешь мышку — только тогда шла перерисовка. Ибо если перетаскивать окно целиком — были бы тормоза. И тормозило тогда все весьма прилично, если что, можно было во многих случаях невооруженным глазом наблюдать как строится картинка. Соответственно чтоб эти тормоза убрать, и появилось 2Д ускорение.
A>Напомню, что он в среднем тратил 5 тактов на выполнение одной команды. A>Сейчас мы имеем процессоры в 3 MHz, 4 ядра и 4 команды за такт. A>Это более, чем в тысячу раз быстрее. A>Вы говорите про какие-то тормоза из-за высоких разрешений.
Во первых, разрешение 640 x 480 в древние VGA времена были при 16 цветах. Соответственно экранная область была порядка 150 килобайт. И для динамической картинки это тогда было довольно много, хотелось сильно ускорить. Сейчас НИЗКОЕ разрешение — это 1920*1080. При миллионах цветов, на пиксель идет 4 байта. Соответственно экранная область 8 мегабайт. Так вот, все анимации и т.д. требуются при хотя бы 60 кадрах в секунду, соответственно в секунду проц должен перелопатить 8*60 = 640 мегабайт. Нет, проц то с этим конечно справится и программными средствами. Вот только ценой загрузки процессора. 4 ядра и 4 такта за такт — это, кстати, пиковая производительность. Когда все инструкции загружены в кеш, нет промахов при предсказании переходов и т.д. В реальности меньше, при этом страдают другие приложения. Ты двигаешь окошко, а в этот момент у тебя начинает приостанавливаться компиляция, начинает пропадать звук в скайпе и т.д. Такое понравится? А если проц десятилетней давности, то ему уже будет напряжно. А процессору обычно есть чем заняться кроме рендеринга картинки.
Ну и если мы переходим к такой вещи, как 3Д, то уже при современных разрешениях у проца ни малейших шансов отрендерить сцену с приемлемой скоростью. Ибо над каждой точкой экрана нужно провести до фига вычислений.
Здравствуйте, eskimo82, Вы писали:
CC>>С указанием что на чём не работает, если можно. E>Например на этом или этом. E>С полным списком можно ознакомится здесь.
Где там хоть одна игра, про которую ты заявил?
?>Никогда не встречал игр, работающих только на Nvidia? Или не работающих на Radeon?
A>Нынешний размер экрана в 6.75 раз больше того, что был в прошлом веке.
нынешние видеокарты решают другие задачи. совсем другие, вообще.
поэтому сложность, несовместимость, драйвера.
а заполнить или, там, скопировать экран — это уже на сдачу. если бы они только этим и занимались бы — разговор имел бы смысл
Здравствуйте, eskimo82, Вы писали:
MD>>А вот некоторые видяхи поумнее умели аж 135 колонок рисовать. Для этого наша прога должна уметь понимать поддерживается ли этот режим, и если да, то знать как в него перейти. E>но некоторые могли в него переходить согласно пожеланию юзера.
Правильно, но как это сделать? На одной видяхе для этого надо записать значение 123 в порт 456, на другой видяхе — дёрнуть int78 с параметром 90
в регистре Ah, и так далее, и тому подобное. Повторю ещё раз: стандарта — не было. Вот совсем.
Здравствуйте, eskimo82, Вы писали:
MD>>Повторю ещё раз: стандарта — не было. Вот совсем. E>Вот вранье. Стандарт был и есть, в том числе и для 132 символов в строке.
Хорошо, давайте читать вот прямо с самого начала:
InstallCheck:
For Ahead adapters, the signature "AHEAD" at C000h:0025h.
For Paradise adapters, the signature "VGA=" at C000h:007Dh.
For Oak Tech OTI-037/057/067/077 chipsets, the signature "OAK VGA" at C000h:0008h.
For ATI adapters, the signature "761295520" at C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
Или милая табличка с комментариями:
Notes:
[2] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
otherwise to mode 23h, thus selecting the appropriate (monochrome or
color) 132x25 character mode.
for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
resident
[3] early XGA boards support 132-column text but do not have this BIOS mode
Итого, вместо одного способа "узнать есть ли поддержка 132*25, и включить при возможности" мы начинаем колбасить простыню проверок в прикладном коде. Ничего не напоминает? Подскажу: если IE, если Chrome, если FireFox…
Это, батенька, никакой не Стандарт. Это — макароны в стиле JavaScript.
Здравствуйте, Mr.Delphist, Вы писали:
MD>>>А вот некоторые видяхи поумнее умели аж 135 колонок рисовать. Для этого наша прога должна уметь понимать поддерживается ли этот режим, и если да, то знать как в него перейти. E>>но некоторые могли в него переходить согласно пожеланию юзера.
MD>Правильно, но как это сделать? На одной видяхе для этого надо записать значение 123 в порт 456, на другой видяхе — дёрнуть int78 с параметром 90 MD> в регистре Ah, и так далее, и тому подобное. Повторю ещё раз: стандарта — не было. Вот совсем.
Все говорят "если нет стандарта, значит драйвер".
Похоже, что это превратилось в какую-то религиозную догму.
Мантру, про которую никто не задумывается.
Во-первых непонятна сама логика.
Ведь драйвер (по вашей логике) — эта некая реализация единого интерфейса. То есть стандарт.
Тогда почему стандарт не сделан на уровне самого железа. Это же легче!
Во-вторых ты говоришь про что? Про текстовый режим?
Что там вообще стандартизировать-то?
Это-ж два числа — размер по вертикали и по горизонтали — два регистра.
Ну были в VGA эти два регистра. Пиши туда да и всё. Не надо аппаратный интерфейс менять.
Да, кстати, 43 и 50 строки в VGA я себе делал. Ничего сложного.
Здравствуйте, alpha21264, Вы писали:
A>Все говорят "если нет стандарта, значит драйвер". A>Похоже, что это превратилось в какую-то религиозную догму. A>Мантру, про которую никто не задумывается.
Не-а, чистая практика.
A>Во-первых непонятна сама логика. A>Ведь драйвер (по вашей логике) — эта некая реализация единого интерфейса. То есть стандарт. A>Тогда почему стандарт не сделан на уровне самого железа. Это же легче!
Потому что никто не пустит тебя к железу. Кто ты такой, чтобы тебя туда пускать? Юзерская программа? Вот говори, что тебе нарисовать, и тебе помогут. Когда положено.
К какому железу тебя пускать? Чтобы настроить отображение видеопамяти, надо, например, на всех PCI мостах по дороге от адаптера к корневому PCI мосту настроить окна-апертуры, и самой карточке выставить нужный адресный диапазон. Кто ты такой, чтобы иметь право этим управлять? Тебе не доверяют. А вдруг ты кусок видеопамяти на чужую память замапишь и станешь через него чужие данные читать?
А вдруг придёт какая-то системная тулза, которой нужен экран, и захочет окно своё отобразить? Ты ей будешь мешать? Нет, извини, тебе на это время доступ просто закрывают (может, невидимо), отображают что нужно, а потом снова твою картинку поднимают наверх.
A>Во-вторых ты говоришь про что? Про текстовый режим? A>Что там вообще стандартизировать-то? A>Это-ж два числа — размер по вертикали и по горизонтали — два регистра. A>Ну были в VGA эти два регистра. Пиши туда да и всё. Не надо аппаратный интерфейс менять.
А если мониторов несколько, а тебе дали только один? Куда писать будем?
A>Да, кстати, 43 и 50 строки в VGA я себе делал. Ничего сложного.
Кто бы сомневался. А теперь повтори то же самое, например, на DEC Alpha.
Там даже карточки почти такие же. Только вот никаких портов 3C0-3DF тебе не дадут, там вообще портов нет.
Зато OpenGL и все наследники — работают без проблем.
Здравствуйте, alpha21264, Вы писали:
A>Ведь драйвер (по вашей логике) — эта некая реализация единого интерфейса. То есть стандарт.
стандартов для видеокарт не существует. каждый производитель делает железку так, как считает для себя нужным. другим туда доступ закрыт.
A>Тогда почему стандарт не сделан на уровне самого железа. Это же легче!
нет, это гораздо сложнее. операционных систем больше одной. и если бы это было стандартом, то под каждую версию железки пришлось бы выпускать свою версию операционки. а если железка устарела? а если наоборот, появилась прорывная технология? здесь концепт драйверов выглядит намного более правильным. проще поменять драйвер, чем операционку.
CC>Раз уж ты влез отвечать на заданный вопрос — будь любезен отвечать на заданный вопрос. CC>
С указанием что на чём не работает, если можно.
Я ответил тебе на заданый вопрос. То что ты не в состоянии прочитать ответ или принять его — это твои и только твои проблемы.
CC>Голоса в твоей голове меня не интересуют.
Если ты слышиш "голоса в моей голове", то тебе следует сходить на прием к психиатору.
CC>Так где тот самый список игр?
Довольствуйся для начала списком исключительных и частенько несовместимых особенностей.
Когда его изучиш вернемся к играм.
MD>Или милая табличка с комментариями:
К переключениюб видеорежимом эта табличка не имеет никакого отношения.
MD>Итого, вместо одного способа "узнать есть ли поддержка 132*25, и включить при возможности" мы начинаем колбасить простыню проверок в прикладном коде. Ничего не напоминает? Подскажу: если IE, если Chrome, если FireFox…
Еще раз:
И все проги самостоятельно не понимали поддерживается этот режим или нет, но некоторые могли в него переходить согласно пожеланию юзера.
MD>Это, батенька, никакой не Стандарт. Это — макароны в стиле JavaScript.
Это у тебя в голове макароны.
MD>А теперь давайте посмотрим на действительный Стандарт на примере VESA MD>http://www.petesqbsite.com/sections/tutorials/tuts/vbe3.pdf MD>И вот что получается в итоге на любой (любой, Карл!!111) SVGA-карточке: MD>
MD>void main(int argc, char *argv[])
MD>{
MD> int x,y;
MD> if (argc != 3)
MD> availableModes();
MD> x = atoi(argv[1]);
MD> y = atoi(argv[2]);
MD> initGraphics(x, y);
MD> drawMoire();
MD> getch();
MD>}
MD>