Помощь - Поиск - Пользователи - Календарь
Полная версия: качественная графика на Паскале
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
TarasBer
У меня вопрос: какие есть способы вывода на экран в графическом режиме (модуль graph не предлагать - тормозной шибко)? Я знаю только один: обращение к видеопамяти - адрес $A000: $0000. Но этот способ удобен лишь при разрешении 320х200 256 цветов. Потому что при другом разрешении видеопамять не влезает в 64 кб и для вывода приходится переключать страницы и делать лишние расчёты, что сильно замедляет программу. Можно ли выводить на экран при помощи портов всяких? А то я хочу улучшить свою прогу, находящуюся на tarasber.narod.ru. А исходники к ней я покажу только если вы очень попросите - их там полметра.
Malice
На сколько я помню есть еще режим LFB в Vesa режимах, когда вся видео память линейно отображается в оперативную, писать можно будет подряд, но будет 32-бита, т.е. на паскале чуть сложнее обращаться.
ps а лучше под TMT переползай, а то по виндой такое работать не будет..
Бродяжник
Скрины впечатлили... автору респект!
Для TP7 есть еще либа Graphix
тут
...или надо менять платформу.
arhimag
FPC + OpenGL
или
FPC + DDraw
ну или вместо FPC Delphi
Гость
Цитата(arhimag @ 24.01.2007 17:23) *

FPC + OpenGL
или
FPC + DDraw
ну или вместо FPC Delphi

Я просто пытаюсь выжать максимум из Паскаля без защищённого режима, без дээлэлов типа опенгл и так далее. Я пытаюсь всё сделать руками. Почему-то мне проще рассчитать всё самому, чем разбираться в том, что в стандартной библиотеке к чему...
TarasBer
Цитата(Malice @ 24.01.2007 13:46) *

На сколько я помню есть еще режим LFB в Vesa режимах, когда вся видео память линейно отображается в оперативную, писать можно будет подряд, но будет 32-бита, т.е. на паскале чуть сложнее обращаться.
ps а лучше под TMT переползай, а то по виндой такое работать не будет..

А можно ссылку на литературу?
И мне кажется, что через порты как-то можно включить графику. Я вот однажды по приколу (САМИ ТАК НЕ ДЕЛАЙТЕ!!!) под милениумом во все порты записал одно и то же число (какое - не знаю)... Экран пятнами покрылся - значит не текстовый режим. Ну я испугался, альтаб нажал - а он не работает... Я стал всё подряд давить, вроде даже ресет давил - не помогло... Как-то вырубил его нахрен всё-таки. Весь естественно в холодном поту, колени трясутся... Когда я включил его снова, то высветилось "инвалид систем диск"... Я правда не упел запаниковать - мой рефлекс сработал раньше: я тут же вытащил дискету и нажал ентер... В общем, система выжила...
Malice
Цитата(TarasBer @ 24.01.2007 21:43) *

А можно ссылку на литературу?

Неа, только гугль. С тех пор как я этим боловался у меня раза 2 винт слетал smile.gif

Цитата
Экран пятнами покрылся - значит не текстовый режим. Ну я испугался, альтаб нажал - а он не работает...

Абсолютно ничего не значит.. Но если ты веришь в этот способ, то могу предложить использовать метод бинарного поиска smile.gif Ты в какие порты писал ? От 0 до FFFF ? Тогда пишешь сперва в первую половину (0..7fff), если покрылось пятнами, то продолжаешь сужать период. Если нет, то во вторую половину и с ней тоже самое..
yes2.gif
hardcase
Суперская программа. Покатался на автобусе =)
Автору грет респект и всяческие почести!

Игра возродила в памяти воспоминания о Duke Nukem 3D...

По поводу памяти - винда не даст через порты.... да и не нужно это по большому счёту.

OpenGL - это выход. Вычислять многие вещи всёравно придётся самому, а вот геморра с выводом картинки меньше, да и картинка будет красивая. Случилось как-то курсовую писать одному кадру, я в OpenGL ни ухом не рылом, фактически с нуля, к тому же не на C++ или Delphi а на C#, - более менее разобрался за пару вечеров в основах.
Archon
Для начала спешу выразить огромный респект автору. Видно, что проекту посвящено немало времени.
Теперь к делу. Что ты подразумеваешь под улучшением графики? Более высокие разрешения? Это возможно.
Подробности:
VESA : можно получить очень высокие разрешения и цветность вплоть до 32 бит на точку, но работает в разы медленнее VGA.
X-MODE : Это семейство видеорежимов, имеющих большее разрешение и/или кол-во цветов, чем стандартные режимы VGA.
Обладают рядом преимуществ:
1. Я слышал, что эти режимы позволяют добиться 4-х кратного ускорения графики, но сам не проверял.
2. Несколько видео страниц в режимах 256 цветов.
3. Поддерживаются всеми VGA картами.
4. Поддержка скроллинга.
Почему-то не рекомендуют ставить горизонтальное разрешение выше 360 точек, обещают проблемы. На сколько мне известно чаще всего в X-Mode используются режимы 360x480x256 и 320x200x256.
Линейная адресация в SVGA: Это то, что описал Malice. По скорости несколько быстрее, чем обычная VESA. Позволяет делать скроллинг и аппаратные видео страницы. Принцип работы такой: обращения к памяти за пределом текущего банка перехватываются обработчиком соответствующего исключения и банк меняется. Короче, переключение банков осуществляется автоматически, аппаратными средствами 386 проца.

Если что-то заинтересует, постараюсь помочь с документацией, но на много не расчитывай, у меня у самого инфы мало sad.gif, реально хорошо знаю только обычную VESA.

Добавлено:
Есть ещё какой-то chain-4, но об этом звере я знаю только то, что он быстрее VGA. Есть предположение, что это и есть X-Mode, но не уверен.
Ozzя
Plus System Pro 2.3
Есть и Vesa, и режимы X
Sam0784
Ну ваще клёва ету игрухуб под окно на современное железо ценыб ей небыло!!!
SkIv
А вообще где можно посмотреть инфу по различным графическим режимам
Ozzя
Цитата(SkIv @ 19.02.2007 17:07) *

А вообще где можно посмотреть инфу по различным графическим режимам

http://www.codenet.ru/cat/Applications/Gra...VESA-Standarts/
SkIv
Цитата(Ozzя @ 20.02.2007 7:54) *

Спасибо большое!
Гость
помогите плиз нужна прога по графике в паскале на движение...
andriano
Если тебе нужна любая прога - ищи. Здесь за тебя вряд ли кто будет заниматься поиском.
Если же нужна конкретная - здесь могут помочь написать, но обязательно при твоем активном участии.
andriano
В связи с тем, что тему подняли, наткнулся на нее.
Хотелось бы расставить некоторые точки над 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 (что, собственно, и было на подавляющем числе видеокарт. Вот он действительно позволял добиться заметно более высокой скорости.
Цитата

Если что-то заинтересует, постараюсь помочь с документацией, но на много не расчитывай, у меня у самого инфы мало sad.gif, реально хорошо знаю только обычную VESA.
Собственно, больше и не надо. После появления стандарта VESA все остальное, в том числе ModeX стали неактуальны.
Цитата

Добавлено:
Есть ещё какой-то chain-4, но об этом звере я знаю только то, что он быстрее VGA. Есть предположение, что это и есть X-Mode, но не уверен.
Совершенно верно, chaun-4 используется как раз в ModeX.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.