| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > многоцветовая графика (256 цветов и более) |
| Автор: shara 29.6.2004, 03:09 |
| Привет всем кто это читает. я достаточно хорошо програмирую на с++, увлекаюсь 3D. но но с 16-тью цветами особо непорисуеш. короче, кто знает как работать с HI COLOR или с VESA или напрямую с видеокартой или ещё с чемнибуть, для того, чобы получить картинку с блоьшым количеством цветов. буду рад любому совету. :) |
| Автор: AndreyVN 29.6.2004, 07:48 |
| Не понятно, что именно надо. Если в Win, работу с видеокартой берет на себя OC. Если в ДОС, управлять картой довольно муторно, за исключением режима 320x200x256. Я генерил изображения (прораммировал трассировку луча) в *.bmp любых форматов (Hi-, true- Color). Отображение картинок будет головной болью вьювера. Если надо, описание *.bmp могу поискать. Андрей. |
| Автор: Конструктор 29.6.2004, 08:14 | ||
Для 256 цветного режима необходимо найти библиотечку svga256.bgi. Она поддерживает разрешения от 320х200 до 1024х768. При инициализации графики просто использешь этот драйвер.
А вообще вот: http://forum.vingrad.ru/index.php?showtopic=24270 |
| Автор: oleg1973 29.6.2004, 09:49 |
| а вообще 256 цветов не есть hi-color и если даже в досе работать то никакого гемороя нет краткая схема для доса: 1) ставим флат режим (дабы получить доступ к памяти за пределом 1 мега) 2) через int 10h и функ vesa 4F02 ставим нужный нам режим, незабыв включить 14 бит в номере режима (4101h к примеру) 3) после установки режима нада получить vesa информатион блок, в нем со смещением 27h лежит адрес LFB ну и все если режим мы выбрали 24 битный то соответствено для установки 1 пиксела будем писать 3 байта RGB |
| Автор: Конструктор 29.6.2004, 10:08 | ||
В VESA можно и нес ставить flat режим, а получать доступ к памяти с помощью окон по 64 кб. А как после установки flat-режима, т.е. насколько я понял перевода проца в защищенный режим, работать в нём из 16-битной по сути прграммы? |
| Автор: oleg1973 29.6.2004, 11:43 |
| неставив флат режим до LFB не долезеш а с окнами это тормозно работать кстати флат не является защищеным режимом, это реальный режим с 32 адресацией так что можеш и 32 битные команды использовать типа mov eax,0ffffffffh |
| Автор: shara 29.6.2004, 12:54 |
| народ, проблема в том, что я умею работать с 16-тью цветами при разрешении 640*480, а это маловато будет. мне надобы научится работать с большым количеством цветов при разрешении от 640*480. вот ношёл тут на форуме как bmp-шки рисовать, правда что-то каряво получается но всёравно хоть что-то. где можно найти библиотеку svga256.bgi? что такое flat режим и как им пользоваться? |
| Автор: oleg1973 29.6.2004, 13:02 |
| shara дак ты под что пишеш? виндос? дос? в виндосе через директдрав рисуй в досе напрямую лучше без всяких библиотек |
| Автор: shara 29.6.2004, 13:32 |
| я работаю в основном работаю в dos но могу и в windowse порисовать директдравом если подскажешь как. лижбы картинка была многоцветовая и с нормальным разрешаловом. я нашел библиотечку svga256.bgi можно ли поподробнее расказать как её пользоваться? и от описания bmp файлов тоже не откажусь. |
| Автор: Maxim Sabalyauskas 1.7.2004, 03:48 |
| Привет всем! Shara, если тебя интересует прямой доступ к видеопамяти/видеокарте могу выслать кое-какую инфу: про VESA, EGA, VGA, SVGA и всё такое. Сразу предупреждаю: проги, работающие с VESA (int 10h), под NT пахать не будут - это так, для информации. Так что если хочешь строить крутые графические приложения под Windows берись за DirectDraw и не парься. В своё время лучший графический режим, готорого я добился в Dos'е - это "1024x768 256 цветов", но опять-таки через страницы (окна), а вот 32-битного режима не пробовал! PS. А я тоже не откажусь от описания .bmp-файлов! |
| Автор: Конструктор 1.7.2004, 08:47 | ||
Пользоваться svga256.bgi очень просто.
|
| Автор: shara 1.7.2004, 11:24 |
| вобщем эта библиотечка svga256.bgi неплохая штука, но она медленно работает. но для некоторых простенькижх програм подойдёт. так-что, наверное, пошёл я учить DirexcDraw и всё такое (я и книгу нашёл). он то и быстрее (НАМНОГО!!! - сам видел), и в ДОСе не надо морочится, ато меня это все порядком достало. но описалово для VESA если кому не лень всёже пришлите |
| Автор: Гость_Andy 15.7.2004, 22:41 |
| ХЭЛПП!!!!!!!! Пытаюсь загрузить SVGA.BGI А С меня выкидывает. Пишет: 16-разрядная подсистема MS-DOS ________ Turbo C++ IDE Процессор NTVDM обнаружил недопустимую инструкцию. CS:d002 IP:0000 OP:ff 3f ff 1f ff Для завершения раб. приложения нажмите "Закрыть". Выкидывает когда пишу d = installuserdriver("svga256" , NULL); m=2; intigraph(&d , &m , ""); Что интересно, при m=0 всё работает. А в других режимах нет! !!!!!!!!!!!!!!!!!ПОМОГИТЕ ПОЖАЛУЙСТА!!!!!!!!!!!!!!!!!!!!!!!! |
| Автор: dima_mak 16.7.2004, 11:50 | ||
Вышли пожалуста мне свою инфу на мыло: [email protected] |
| Автор: dima_mak 16.7.2004, 12:50 | ||
А у меня при попытке инициализации:
ошибок не говорит, но и линию не рисует и лампочка на мониторе начинает мигать(как в спящем режиме) |
| Автор: dima_mak 16.7.2004, 13:21 | ||
А при модэ=0 при попытке нарисовать линию выдаёт
|
| Автор: shara 17.7.2004, 03:17 |
| dima_mak лампочка мигает потому-что или библиотека не понимает твою видеокарту или комп не поддерживает такое разришение(покрайней мере заданное таким образом) или ещё что-то в этом роде. вобщем, народ, не партесь. мой вам совет, пишите под Win ато будет такая куча проблем со скоростью работы с графикой и совместимостью програм с другими компами что мне даже представить страшно. если вам надо работать с графикой - то купите себе книгу по DirectX вчастности по DirectDraw и учите её, мне этото вариант больше нравится, хотя кто его знает. и еще одно эта библиотека SVGA256.bgi так медленно работает что её можно нормально использовать только на самом маленьком разрешании. (сам видел) |
| Автор: Конструктор 19.7.2004, 13:57 | ||
Не знаю, у меня на 486 33МГц все нормально работает (в смысле работало) если использовать вместе с MTX библиотечкой. Вполне шустро, только мерцает иногда зараза при перерисовке. |
| Автор: Graf Zeppelin 1.8.2004, 13:23 |
| У меня тоже выбрасывает сообщение об ошибке |
| Автор: Mysterio 3.8.2004, 09:27 | ||
| Hi all. Чего-то меня достала эта SVGA256.bgi. С ней куча проблем(типа MODE NOT SUPPORTED ON THIS CARD {хотя вроде и GeForce440, и на другом компе тоже самое пишет {TsengLabsPCI(2M)} и просто не хочет переходить в графику(мигает курсор доса вверху,ошибок не выдаёт,а само типа рисует{//задержка})}); SVGA режим пашет только через прямой доступ к видеопамяти, а от этой .bgi я добился только 320x200 256цв.(это стандартн.VGA режим). Если кому интересно, то вот инициализация через VESA в 640x480x256(было на каком-то сайте)
100H - 640x400x256 101H - 640x480x256 //16 цветов не привожу 103H - 800x600x256 105H - 1024x768x256 107H - 1280x1024x256//дальше текстовые до 10DH - 320x200x32768... и т.д.(можно эксперементировать до 11AH)[quote] Мне хотелось бы иметь 112H(640x480x64k цвет),но мозги уже сворачиваюстя в трубочку.Можть кто подскажет? |
| Автор: oleg1973 3.8.2004, 14:10 |
| ddraw поможет |
| Автор: Mysterio 3.8.2004, 18:51 |
| Лично я ненавижу DIRECTы всякие и винDOS в том числе. Я вообще пытаю свою систему. |
| Автор: Guest 3.10.2004, 16:12 |
| это потому что у тебя либо манитор либо видюха не поддерживает такой режим или не поддерживает такой режим при такой попытке его активировать. у меня на 800*600 тоже лампочка мигает, помняй разрешалово. и вообще народ, даю вам ХОРОШИЙ совет: не работайте на прямую с видео, это медленно, неудобно и не всегда выходит |
| Автор: Maxim Sabalyauskas 12.10.2004, 03:02 | ||
Ненавидите DIRECTы - попробуйте OPENы (в смысле ГээЛы). Вот что! Как насчёт того, чтобы написать свою библиотеку графики? Всем, кто хочет написать (или уже пишет) свои дрова, тулкиты и т.п., давайте дружить по имэйлу - поделимся опытом! |
| Автор: Mysterio 28.12.2004, 09:05 |
| Ну уж нет,люди. Мне нужен либо DOS либо сразу прерываниями. Насчет мыла идея заманчивая И еще вопрос. У меня в VESA режиме(любом) получается всего одна страница.Надо хотя-бы 2. Или это делается по-другому? |
| Автор: Michey 20.3.2005, 05:10 |
| Помогите пожалуйста. В проге, если открыть забитые строки, то всё перестаёт работать. Цель: мне необходимо выводить одиночные символы графическом режиме DOS, но всё время прога выдаёт весь массив или если это одна переменная, то символ и букву "я". Почему????? Через указатель - весь массив. Через посредника - весь массив. С массива [1] через посредника в массив [10] вываливается массив [10]. // Прога #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream.h> #include <ctype.h> int main() { int graphdriver=DETECT, gmode, errorcode; int c; char str[10]; char ch[1]; char cx; initgraph(&graphdriver, &gmode, ""); errorcode = graphresult(); if(errorcode != grOk) { printf("ЋиЁЎЄ ЁЁжЁ «Ё§ жЁЁ ¤а ©ўҐа %i \n", errorcode=graphresult()); printf("\n? ¦¬Ё Є« ўЁиг!\n"); getch(); exit(1); } outtext ("Insert text: "); for (c=0; c<10; c++) { ch[0]=getch(); // cx=ch[0]; // str[c]=cx; if (*ch==' ' || *ch==27) break; outtext (ch); gotoxy(40,15); printf("%c", *ch); } closegraph(); return 0; } |
| Автор: Michey 20.3.2005, 05:24 |
| Да, теперь я зарегестрировался |
| Автор: Guest 21.10.2005, 20:45 |
| спасибо |