[amirus] Re: CGX

  • From: poweramiga@xxxxxxxxxx
  • To: amirus@xxxxxxxxxxxxx
  • Date: Thu, 14 Jul 2005 23:50:21 +0300

Hello 
On 14.07.05, Maxim Ilyn wrote:\n

MI>  Сам посуди - строишь сначала в обычной памяти видеокадр - потом WPA
MI>  перебрасываешь его на экран.

Ну, а демках так всё и делается. Сначала рисуется в памяти кадр, а потом на 
экранчик пуляется :)

MI>  А то сразу резервируешь место в видеопамяти и там строишь кадр, потом
MI>  просто подсовываешь его. Да и doublebuffers получается одновременно.

Хм, если строить видеокадр по кускам прямо на эране можно нарваться на 
асинхронизацию.

MI>> Сначала откроем экран. Попробую на сях написать :) Если ошибусь поправте. Я
MI>> только в начале пути...
MI>> 
MI>> cgxscr = OpenScreenTagList(*cgxsreentags); теги вообщем ничем от обычных не
MI>> отличаются. scr = *cgxscr;
MI>> scr = *(scr+sc_RastPort+rpBitMap); чует моё сердце, что эти две строчи 
написаны
MI>> неправильно :)

MI>  Нда, кто-же тебя так учил обращаться к элементу структуры ;)

Никто, я же дои читать не люблю. В сях меня хватило на пол книжки :) А в целом, 
что я написал работь
будет?

MI>  Сейчас детей плохому научишь ;) Надо вот так, без промежуточных :

Писизму? :)

MI>  cgxbitmaplock = LockBitMapTagList(cgxscr->RastPort.BitMap,

Разъясни в чём разница и как работает?

MI>> в cgxbitmap_baseaddress лежат вожделенные "битмапы" и в них спокойно можно 
писать

MI>  Это я уже понял. А что значит битмапы ? В случае 32бит экрана там вроде 
адрес
MI>  первой ячейки. Или ты еще про AGA вспомнил ?

Ну адрес, какая разница. Наывается всё равно по старой памяти битмапами.

MI>> напрямую. только предварительно нужно проверить (сразу после открытия 
экрана),
MI>> что выделенная под экран память непрерывна и вообще киберграфична :) scr =
MI>> *cgxscr;
MI>> scr = *(scr+sc_RastPort+rpBitMap); a=GetCyberMapAttr(scr, 
CYBRMATTR_ISCYBERGFX);
MI>> b=GetCyberMapAttr(scr, CYBRMATTR_ISLINEARMEM);

MI>  Вот этого я не делал, спасибо, учтем, но как я понял она всегда непрерывна.
MI>  Иначе где храняться адреса кусков ?

Видимо нет. Дело в том, что я писал это с оглядкой на стартапы из за бугра. Там 
эта проверка есть.
Тут видимо опять старое наследие работает. На AGA битмапы могли лежать не 
подряд, а посему есть
проверка на линейность. Сейчас подозреваю, что данная проверка не нужна.

MI>> не забыть про глубину экрана и про, то что форматов расположения может быть
MI>> несколько RGBA, ARGB, RGB например. Это всё вроде в ID экрана должно быть.

MI>  А тут зачем ID - ты же уже получли значения : cgxbitmap_dept, 
cgxbitmap_pixfmt

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

MI>> Угу. Я на вуду прикалывался в прошлом году. Там кстати 24 бита открывалось 
вроде.

MI>  Как хоть это у вас получалось ? У меня только 8LUT, RGB16PC или ARGB32
MI>  открываются.

У тебя RadeOn :) У меня сейчас тоже. В прошлом году вуда была.

Regards


Other related posts: