Автор: TarasBer 24.01.2007 17:01
У меня вопрос: какие есть способы вывода на экран в графическом режиме (модуль graph не предлагать - тормозной шибко)? Я знаю только один: обращение к видеопамяти - адрес $A000: $0000. Но этот способ удобен лишь при разрешении 320х200 256 цветов. Потому что при другом разрешении видеопамять не влезает в 64 кб и для вывода приходится переключать страницы и делать лишние расчёты, что сильно замедляет программу. Можно ли выводить на экран при помощи портов всяких? А то я хочу улучшить свою прогу, находящуюся на tarasber.narod.ru. А исходники к ней я покажу только если вы очень попросите - их там полметра.
Автор: Malice 24.01.2007 17:46
На сколько я помню есть еще режим LFB в Vesa режимах, когда вся видео память линейно отображается в оперативную, писать можно будет подряд, но будет 32-бита, т.е. на паскале чуть сложнее обращаться.
ps а лучше под TMT переползай, а то по виндой такое работать не будет..
Автор: Бродяжник 24.01.2007 20:37
Скрины впечатлили... автору респект!
Для TP7 есть еще либа Graphix
http://www.cg.tuwien.ac.at/~knapp/graphix_old/gxdownload.html
...или надо менять платформу.
Автор: arhimag 24.01.2007 21:23
FPC + OpenGL
или
FPC + DDraw
ну или вместо FPC Delphi
Автор: Гость 25.01.2007 1:26
Цитата(arhimag @ 24.01.2007 17:23)
FPC + OpenGL
или
FPC + DDraw
ну или вместо FPC Delphi
Я просто пытаюсь выжать максимум из Паскаля без защищённого режима, без дээлэлов типа опенгл и так далее. Я пытаюсь всё сделать руками. Почему-то мне проще рассчитать всё самому, чем разбираться в том, что в стандартной библиотеке к чему...
Автор: TarasBer 25.01.2007 1:43
Цитата(Malice @ 24.01.2007 13:46)
На сколько я помню есть еще режим LFB в Vesa режимах, когда вся видео память линейно отображается в оперативную, писать можно будет подряд, но будет 32-бита, т.е. на паскале чуть сложнее обращаться.
ps а лучше под TMT переползай, а то по виндой такое работать не будет..
А можно ссылку на литературу?
И мне кажется, что через порты как-то можно включить графику. Я вот однажды по приколу (САМИ ТАК НЕ ДЕЛАЙТЕ!!!) под милениумом во все порты записал одно и то же число (какое - не знаю)... Экран пятнами покрылся - значит не текстовый режим. Ну я испугался, альтаб нажал - а он не работает... Я стал всё подряд давить, вроде даже ресет давил - не помогло... Как-то вырубил его нахрен всё-таки. Весь естественно в холодном поту, колени трясутся... Когда я включил его снова, то высветилось "инвалид систем диск"... Я правда не упел запаниковать - мой рефлекс сработал раньше: я тут же вытащил дискету и нажал ентер... В общем, система выжила...
Автор: Malice 25.01.2007 2:34
Цитата(TarasBer @ 24.01.2007 21:43)
А можно ссылку на литературу?
Неа, только гугль. С тех пор как я этим боловался у меня раза 2 винт слетал
Цитата
Экран пятнами покрылся - значит не текстовый режим. Ну я испугался, альтаб нажал - а он не работает...
Абсолютно ничего не значит.. Но если ты веришь в этот способ, то могу предложить использовать метод бинарного поиска
Ты в какие порты писал ? От 0 до FFFF ? Тогда пишешь сперва в первую половину (0..7fff), если покрылось пятнами, то продолжаешь сужать период. Если нет, то во вторую половину и с ней тоже самое..
Автор: hardcase 25.01.2007 2:38
Суперская программа. Покатался на автобусе =)
Автору грет респект и всяческие почести!
Игра возродила в памяти воспоминания о Duke Nukem 3D...
По поводу памяти - винда не даст через порты.... да и не нужно это по большому счёту.
OpenGL - это выход. Вычислять многие вещи всёравно придётся самому, а вот геморра с выводом картинки меньше, да и картинка будет красивая. Случилось как-то курсовую писать одному кадру, я в OpenGL ни ухом не рылом, фактически с нуля, к тому же не на C++ или Delphi а на C#, - более менее разобрался за пару вечеров в основах.
Автор: Archon 25.01.2007 7:20
Для начала спешу выразить огромный респект автору. Видно, что проекту посвящено немало времени.
Теперь к делу. Что ты подразумеваешь под улучшением графики? Более высокие разрешения? Это возможно.
Подробности:
VESA : можно получить очень высокие разрешения и цветность вплоть до 32 бит на точку, но работает в разы медленнее VGA.
X-MODE : Это семейство видеорежимов, имеющих большее разрешение и/или кол-во цветов, чем стандартные режимы VGA.
Обладают рядом преимуществ:
1. Я слышал, что эти режимы позволяют добиться 4-х кратного ускорения графики, но сам не проверял.
2. Несколько видео страниц в режимах 256 цветов.
3. Поддерживаются всеми VGA картами.
4. Поддержка скроллинга.
Почему-то не рекомендуют ставить горизонтальное разрешение выше 360 точек, обещают проблемы. На сколько мне известно чаще всего в X-Mode используются режимы 360x480x256 и 320x200x256.
Линейная адресация в SVGA: Это то, что описал Malice. По скорости несколько быстрее, чем обычная VESA. Позволяет делать скроллинг и аппаратные видео страницы. Принцип работы такой: обращения к памяти за пределом текущего банка перехватываются обработчиком соответствующего исключения и банк меняется. Короче, переключение банков осуществляется автоматически, аппаратными средствами 386 проца.
Если что-то заинтересует, постараюсь помочь с документацией, но на много не расчитывай, у меня у самого инфы мало , реально хорошо знаю только обычную VESA.
Добавлено:
Есть ещё какой-то chain-4, но об этом звере я знаю только то, что он быстрее VGA. Есть предположение, что это и есть X-Mode, но не уверен.
Автор: Ozzя 25.01.2007 15:24
http://pascal.sources.ru/graph/psp23.zip
Есть и Vesa, и режимы X
Автор: Sam0784 2.02.2007 7:31
Ну ваще клёва ету игрухуб под окно на современное железо ценыб ей небыло!!!
Автор: SkIv 19.02.2007 20:07
А вообще где можно посмотреть инфу по различным графическим режимам
Автор: Ozzя 20.02.2007 11:54
Цитата(SkIv @ 19.02.2007 17:07)
А вообще где можно посмотреть инфу по различным графическим режимам
http://www.codenet.ru/cat/Applications/Graphics/VGA-VESA-Standarts/
Автор: SkIv 20.02.2007 16:28
Цитата(Ozzя @ 20.02.2007 7:54)
http://www.codenet.ru/cat/Applications/Graphics/VGA-VESA-Standarts/
Спасибо большое!
Автор: Гость 13.05.2008 1:08
помогите плиз нужна прога по графике в паскале на движение...
Автор: andriano 13.05.2008 11:33
Если тебе нужна любая прога - ищи. Здесь за тебя вряд ли кто будет заниматься поиском.
Если же нужна конкретная - здесь могут помочь написать, но обязательно при твоем активном участии.
Автор: andriano 13.05.2008 12:04
В связи с тем, что тему подняли, наткнулся на нее.
Хотелось бы расставить некоторые точки над i.
Цитата(Archon @ 25.01.2007 4:20)
VESA : можно получить очень высокие разрешения и цветность вплоть до 32 бит на точку, но работает в разы медленнее VGA.
Ну, коль скоро используемый объем видеопамяти в разы больше, то и время ее заполнения во столько же раз больше.
Как говорится, чудес не бывает.
Цитата
X-MODE : Это семейство видеорежимов, имеющих большее разрешение и/или кол-во цветов, чем стандартные режимы VGA.
Обладают рядом преимуществ:
1. Я слышал, что эти режимы позволяют добиться 4-х кратного ускорения графики, но сам не проверял.
2. Несколько видео страниц в режимах 256 цветов.
3. Поддерживаются всеми VGA картами.
4. Поддержка скроллинга.
Но при этом обладают еще большим количеством недостатков.
4-хкратное ускорение графики возможно лишь при заливке одним цветом. Теоретически. На практике режим очень тормозной из-за необходимости постоянно дергать регистры видеоадаптера.
Цитата
Почему-то не рекомендуют ставить горизонтальное разрешение выше 360 точек, обещают проблемы. На сколько мне известно чаще всего в X-Mode используются режимы 360x480x256 и 320x200x256.
Потому что стандартным VGA это банально не поддерживается.
Правда, поддерживается VGA-совместимыми картами, выпущенными позднее.
Кстати, о работе в этих режимах я в свое время писал:
http://www.osp.ru/pcworld/1997/05/157500/
http://www.osp.ru/pcworld/1997/09/157969/
http://www.osp.ru/pcworld/1997/11/158244/
но с тех пор прошло более 10 лет, и на сегодняшний день, думаю, эта технология уже потеряла актуальность.
Цитата
Линейная адресация в SVGA: Это то, что описал Malice. По скорости несколько быстрее, чем обычная VESA. Позволяет делать скроллинг и аппаратные видео страницы. Принцип работы такой: обращения к памяти за пределом текущего банка перехватываются обработчиком соответствующего исключения и банк меняется. Короче, переключение банков осуществляется автоматически, аппаратными средствами 386 проца.
Не совсем так.
То, что описано, это программная эмуляция линейного буфера, применяемая иногда для тех карт, в которых аппаратного LFB не было. Делалась она исключительно в целях совместимости и ни о каком приросте скорости говорить не приходится.
Другое дело - наличие апаратно поддерживаемого LFB (что, собственно, и было на подавляющем числе видеокарт. Вот он действительно позволял добиться заметно более высокой скорости.
Цитата
Если что-то заинтересует, постараюсь помочь с документацией, но на много не расчитывай, у меня у самого инфы мало
, реально хорошо знаю только обычную VESA.
Собственно, больше и не надо. После появления стандарта VESA все остальное, в том числе ModeX стали неактуальны.
Цитата
Добавлено:
Есть ещё какой-то chain-4, но об этом звере я знаю только то, что он быстрее VGA. Есть предположение, что это и есть X-Mode, но не уверен.
Совершенно верно, chaun-4 используется как раз в ModeX.