Mvg (journeyman)
2002/10/26 10:27
|
|
Здравствуйте.
Существуют - ли для Спринтера стандартные библиотеки для работы с графикой. (но не биос, дюже тормозонй). Самому написать не трудно, но очень не хочется изобретать велосипед. т.е. хочется использовать "стандартный" и "общепринятый" способ обращения к видеопамяти (желательно с исхонником).
нужны putpixel и getpixel (кто паскаль знает, тот поймет)
Как для 16, так и для 256 цветов. Жду ответа.
С Уважением Сергей.
|
Anton Enin (member)
2002/10/30 04:09
|
|
если ты не хочешь, чтобы твоя программа превратилась в слайдшоу, не думай о таких вещах как <putpixel> и <getpixel>... думай о групповых операциях с экраном и с использованием акселератора.... :)
можешь посмотреть исходники моих мини-демок: flames и 256color... они были опубликованы на сайте... в них можно что-нибудь найти по этой теме...
|
Anonymous (Unregistered) 2002/10/30 22:35
|
|
Здравствуйте.
>>если ты не хочешь, чтобы твоя программа превратилась в слайдшоу, не думай о таких вещах как <putpixel> и <getpixel>... думай о групповых операциях с экраном и с использованием акселератора....
Не думаю, что при помощи акселератора можно как-либо ускорить процесс работы с гаф. примитивами. (например вычерчиваниеепроизвольных линий). А на счет можности..... именно тормоза вины подстегнули развитие выч. мощностей на пэцэ.
Так есть стандартые способы?
С Уважением Сергей.
|
Denis Parinov (Sprinter Team)
2002/10/31 00:54
|
|
> Существуют - ли для Спринтера стандартные библиотеки для работы с графикой. (но не биос, дюже тормозонй).
> Самому написать не трудно, но очень не хочется изобретать велосипед. т.е. хочется использовать "стандартный" и "общепринятый" способ обращения к видеопамяти (желательно с исхонником). нужны putpixel и getpixel (кто паскаль знает, тот поймет)
Существует некоторый набор исходников, к сожалению не оформленный для публикации. Мы будем над этим работать, но библиотек на все случаи жизни пока нет.
Насчет putpixel / get pixel. Вот пример который я публиковал на форуме:
Например, если вам нужно поставить точку на экране, то подпрограмма длярежима
81h будет выглядеть так:
; HL - горизонтальная координата
; DE - вертикальная координата
IN A,(0E2h) ;считать из порта номер страницы подключенной в
;третье окно памяти
LD C,A ;запомнить в регистре C
LD A,50h ;страница видео памяти
OUT (0E2h),A ;подключение видео памяти
LD A,E ;поместить вертикальную координату в регистр A.
OUT (89h),A ;выдать в порт
LD DE,0C000h ;адрес начала третьего окна памяти
ADD HL,DE ;получить адрес точки (адрес начала окна +
;горизонтальная координата)
LD A,255 ;цвет выводимой точки (от 0 до 255)
LD (HL),A ;вывод точки на экран
LD A,C ;вспомнить номер страницы памяти
OUT (0E2h) ;подключить страницу памяти вместо страницы видео
;памяти
для чтения соответственно надо поменять LD (HL),A на LD A,(HL).
|
Anton Enin (member)
2002/10/31 03:19
|
|
т.е. ты хочешь повторить винды и пц?... :)
вызывать библиотечные функции для таких вещей нецелесообразно... в примере Дениса приведен прототип
библиотечной функции... но для быстрого рисования приметивов 100 тактовая точка - это слишком медленно... поэтому такие функции как putpixel/getpixel должны быть интегрированы в отрисовщик приметивов...
например:
..
инициализация vram
...
main_loop:
... ; hl - x coord a - y coord c - col
out (YPORT),a
set 6,h ; если vram подключена с 4000
ld (hl), a ; put pixel
...
end_main_loop
деинициализация vram
|
Shaos (enthusiast)
2002/10/31 07:58
|
|
> Не думаю, что при помощи акселератора можно как-либо ускорить
> процесс работы с гаф. примитивами. (например вычерчиваниеепроизвольных линий).
Зачем тебе произвольные линии в гуе???
Акселератор покрывает все возможности гуя. Он может в частности следующее:
- быстрое заполнение горизонтального отрезка длиной до 256 точек одним цветом (в режиме 640x256 - до 512 точек)
- быстрое заполнение вертикального отрезка одним цветом
- быстрое копирование горизонтального отрезка длиной до 256 точек (в режиме 640x256 - до 512 точек)
- быстрое копирование вертикального отрезка
А из этого всего следует заполнение-копирование прямоугольников, вывод шрифтов, примитивов и т.д.
Достаточно сказать, что символы в FN выводятся почти мгновенно именно засчет акселератора, если ты все будешь делать путпикселами, то ты просто отпугнешь юзеров неимоверными тормозами :)
Alexander Shabarshin (shaos@mail.ru)
NedoPC Project
|
Anonymous (Unregistered) 2003/03/01 10:44
|
|
а как сделать
..
>>инициализация vram
...
и
>>деинициализация vram
|
Alex_Goryachev (Sprinter Team)
2003/03/01 11:25
|
|
Возможно, пригодится пример из href=http://www.petersplus.com/download/sources/aprint.zip> исходников Антона Енина, опубликованных на сайте
; set requist video mode 640x256x16
SetVideoMode:
ld c, 0x51 ; save previos vmode
rst 0x10
ld (vmode + 1), a
ld a, b
ld (vscrn + 1), a
sub a
call CrearVideoRam
ld bc, 0x0050 ; set 640x256x16
ld a, 0x82
rst 0x10
ld hl, CustomPalette
ld de, 0x1000
ld bc, 0xFFA4
sub a
rst 0x08 ; load palette
ret
; restore previos video mode
ResVideoMode:
sub a
call CrearVideoRam
vscrn: ld b, 0x00
vmode: ld a, 0x00
ld c, 0x50
rst 0x10 ; set previos vmode
ret
---
PETERS PLUS LTD
|
Anonymous (Unregistered) 2003/03/02 17:12
|
|
Хотелось - бы побольше узнать об акселераторе (функции, коды управлкеия (поподробнее), ограничения к применению и пр.).
А то дюже графика тормозит ...
|
Alex_Goryachev (Sprinter Team)
2003/03/03 16:51
|
|
Посмотрите здесь .
---
PETERS PLUS LTD
|