Вобщем такая задача: надо написать на VC 6.0 програмку, которая используя процедурки написаные на асме-(асемблерные вставки) делает следующее: а) считывает из видеобуфера байты, которые представляют область на экране, скажем ректнагл 100х100 в позиции top:50 left:50 б) такие же данные записывает если кто-то писал плз намекните как и/или мож кинете линку
Используй DirectDraw например так: http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=7918#8
Спасибо, я игрушку писал на ДиректХ тут просто надо написать брату курсовую работу, а я даже не знаю с чего приступить. асемблер знаю теоретически, хотя если популярно объяснить то реализую. было бы очень гуд если бы на вашем форуме помогли
перефразированый вопрос написать программу на С, которая используя 2-е функции написаные на асемблере делает а) копирует из видеобуфера в память данные, которые представляют определённую облась на экране. эта область задаётся кооринатами левого-верхнего и правого-нижнего угла. б) копирует из памяти в видеобуфер данные в определённую область памяти. в виде примера использования этих функций написать программу, которая копирует квадратик 50х50, и потом "накладывая" на экран передвигает этот квадратик по экрану. Эта программа должна иметь (условно) такой вид: stuct RGBInfo { byte r; byte g; byte b; } typedef RGBInfo* VIDEODATA; LoadVideoBuffer(int x,int y, int width, int height,VIDEODATA &data); { asm code } SaveVideoBuffer(int x,int y, int width, int height,VIDEODATA data); { asm code } int main() { VIDEODATA square = null; VIDEODATA screen = null; LoadVideoBuffer(0,0,800,600,screen); LoadVideoBuffer(50,50,50,50,square); for (int i=50,i<750;i+=5) { SaveVideoBuffer(0,0,800,600,screen); SaveVideoBuffer(50+i,50,50,50,square); } return 0; }
Ну дык если DX знаешь и пиши на С. Потом можно получить asm листинги для нужных функций, и доработать их немного. Здесь больше возни с созданием интерфейсов и определением формата экрана, то что на С должно быть. Единственно - при алго как выше, скроллируемый кусок или мерцать будет или видно его не будет совсем, т.к. или буферизациию нужно, или синхронизацию по VSync. ЗЫ: используй тэг [cоde][/code] - красивее будет
Под Windows напрямую работать с видеопамятью можно только из драйвера, а иначе придется юзать Direct X.
странно в книжке не понмю кого был пример как в виндозе рисовать сглаженую линию (вроде режим 13h но мне это ничего не говорить) ладно раз никто не знает - буду мучать мануалы :-(
А что знать-то нужно? Ничего не спрашиваешь конкретного режим 13h - это DOS, а не виндос. А виндосе к видеопамяти всего 2 пути, для юзерденда только Direct X.
это задание для 2-го курса ДиректХ не подходит - но сделал бы с удовольствием так Почему-то мне объяснили что присловутый квадратик должен двигаться в режиме ВГА буду разбираться
Поскольку топ в WASM.WIN32, то никто и не догадался, что нужно VGA Я бы посмотрел сорцы старых DOS'овских интро (гугл находит кучу или на sources.ru что-то есть) - какой-нибудь scroll - это то, что нужно. В большенстве, они на турбопаскале + inline asm (как раз те части, которые тебе нужны), переделать можно. Вот только разве MSVC 6.0 компилирует файлы для DOS?
гы, равзве 800х600 32бита это не вга я что то в асме вобще запутался давай я тебе напишу простенькую нейросеть для прогнозирования валютного рынка а ты мне такую прожку? )) п.с. мне так будет намного проще
Я сразу на DOS/VGA подумал, но решил обождать... мало ли как щас вузы учат, может уже сразу на 2м курсе прямой х дают. Режим 13h -- самый простой и удобный. Видеопамять линейна, на один пиксел приходится 1 байт, который является индексом в таблице цветов. Сначала нужно настроить палитру (таблицу цветов), а рисование пиксела проще простого: [VideoBuf+y*320+x] = Color Перемещение квадратика с эффектом наложения -- это обычная техника прозрачных спрайтов: при копировании из SRC в DEST, проверяется, не равен ли соотв. цвет пиксела из SRC прозрачному цвету (обычно 0). Если равен -- значит оставить соотв. пиксел DEST без изменений, иначе -- копировать пиксел из SRC в DEST. А 800*600*32 -- это уже VESA, а не 13h. В качестве учебного пособия рекомендую скачать книгу Андре Ла Мота.
Потому что есть много умников, особенно мерикоских которые тебя обламают на !!!500баксов за проэктик а потом нагребут на нём 10000у.е. вот и пиши тада на халяву.
если бы я на этом мега проэкте подрывал лаве вобще был бы другой разговор а так - это просто студенты, которые не работают.
Дык студенты эти не только не работают, но и учиться не хотят )) Лучше проясни условия - под виндос или ДОС.