реклама на сайте
подробности

 
 
> ep9307 & Graphic accelerator, Глюки при использовании block copy
Andrei....
сообщение Dec 19 2006, 09:42
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Разрешение экрана 640х480, 256-ти цветный режим. При использовании операции "block copy" на экранную область, иногда (при некоторых ширинах копируемого прямоугольника) наблюдаются глюки в виде небольших горизонтальных полосок толщиной в пиксел и шириной до 4-х пикселов с правого края копируемай области. Никто не сталкивался с таким эффектом?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Dec 19 2006, 14:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Напишите, что Вы хотите получить, и что конкретно записываете в регистры акселератора, когда возникает глюк.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Dec 20 2006, 10:19
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Цитата(aaarrr @ Dec 19 2006, 14:55) *
Напишите, что Вы хотите получить, и что конкретно записываете в регистры акселератора, когда возникает глюк.


Собственно ф-ия коприравиния выглядит так:
void BltFast(LPSURFACE destSurf,unsigned short dsX,unsigned short dsY,LPSURFACE srcSurf,unsigned long srcleft,unsigned long srctop,unsigned long srcright,unsigned long srcbottom,unsigned char dcTrans)
{
if((srcright>srcleft)&&(srcbottom>srctop))
{
while(BLOCKCTRL & 1);

if(dcTrans & BLTFAST_SRCCOLORKEY)TRANSPATTRN=srcSurf->Trans;
SRCPIXELSTRT=((srcleft%4)*8/*PEL*/);
BLKSRCSTRT=srcSurf->StartAddress+4*srcSurf->Lenght*srctop+srcleft;
BLKSRCWIDTH=(srcright-1)/4-srcleft/4;
SRCLINELENGTH=srcSurf->Lenght;

DESTPIXELSTRT=((dsX%4)*8/*SPEL*/)|((((dsX+(srcright-1-srcleft))%4)*8)<<16/*EPEL*/);
BLKDESTSTRT=destSurf->StartAddress+dsY*destSurf->Lenght*4+dsX;
DESTLINELENGTH=destSurf->Lenght;
BLKDESTWIDTH=(dsX+(srcright-1-srcleft))/4-dsX/4;
BLKDESTHEIGHT=srcbottom-srctop-1;
BLOCKCTRL=0;
BLOCKCTRL=(2<<17/*P*/)|(0<<14/*BG*/)|((dcTrans & BLTFAST_SRCCOLORKEY?1:0)<<2/*TRANS*/)|(1/*ENABLE*/);
}
}
где, typedef struct{
unsigned long StartAddress;/*start address align word*/
unsigned short Width;/*width in pixel*/
unsigned short Height;/*height in pixel*/
unsigned short Lenght;/*lenght in words*/
unsigned long Trans;/*tranparency*/
} SURFACE, *LPSURFACE;

глюк возникает при следующих входных параметрах:
srcSurf - поверхность 1376х279 пикселов
srcleft=0,srctop=0,srcright=344(!!!именно такой параметр вызывает глюки),srcbottom=279
dsX, dsY любое значение
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.02176 секунд с 7
ELECTRONIX ©2004-2016