Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> многоцветовая графика (256 цветов и более), желательно для 640*480 и выше 
:(
    Опции темы
shara
Дата 29.6.2004, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



Привет всем кто это читает.
я достаточно хорошо програмирую на с++, увлекаюсь 3D. но но с 16-тью цветами особо непорисуеш. короче, кто знает как работать с HI COLOR или с VESA или напрямую с видеокартой или ещё с чемнибуть, для того, чобы получить картинку с блоьшым количеством цветов. буду рад любому совету. :)


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
AndreyVN
Дата 29.6.2004, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 25.6.2004
Где: Здесь, в Волгогра де

Репутация: нет
Всего: нет



Не понятно, что именно надо.

Если в Win, работу с видеокартой берет на себя OC.

Если в ДОС, управлять картой довольно муторно, за исключением режима 320x200x256. Я генерил изображения (прораммировал трассировку луча) в *.bmp любых форматов (Hi-, true- Color). Отображение картинок будет головной болью вьювера.

Если надо, описание *.bmp могу поискать.

Андрей.
PM   Вверх
Конструктор
Дата 29.6.2004, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Для 256 цветного режима необходимо найти библиотечку svga256.bgi. Она поддерживает разрешения от 320х200 до 1024х768. При инициализации графики просто использешь этот драйвер.

Код

d = installuserdriver("svga256",NULL);
m = 2;
initgraph(&d , &m , "");


А вообще вот:
http://forum.vingrad.ru/index.php?showtopic=24270

smile.gif
PM MAIL WWW ICQ   Вверх
oleg1973
Дата 29.6.2004, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



а вообще 256 цветов не есть hi-color
и если даже в досе работать то никакого гемороя нет
краткая схема для доса:
1) ставим флат режим (дабы получить доступ к памяти за пределом 1 мега)
2) через int 10h и функ vesa 4F02 ставим нужный нам режим, незабыв включить 14 бит в номере режима (4101h к примеру)
3) после установки режима нада получить vesa информатион блок, в нем со смещением 27h лежит адрес LFB
ну и все
если режим мы выбрали 24 битный то соответствено для установки 1 пиксела будем писать 3 байта RGB


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Конструктор
Дата 29.6.2004, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Цитата
1) ставим флат режим (дабы получить доступ к памяти за пределом 1 мега)


В VESA можно и нес ставить flat режим, а получать доступ к памяти с помощью окон по 64 кб. А как после установки flat-режима, т.е. насколько я понял перевода проца в защищенный режим, работать в нём из 16-битной по сути прграммы?

PM MAIL WWW ICQ   Вверх
oleg1973
Дата 29.6.2004, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



неставив флат режим до LFB не долезеш
а с окнами это тормозно работать
кстати флат не является защищеным режимом, это реальный режим с 32 адресацией
так что можеш и 32 битные команды использовать smile.gif
типа mov eax,0ffffffffh


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
shara
Дата 29.6.2004, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



народ, проблема в том, что я умею работать с 16-тью цветами при разрешении 640*480, а это маловато будет. мне надобы научится работать с большым количеством цветов при разрешении от 640*480. вот ношёл тут на форуме как bmp-шки рисовать, правда что-то каряво получается но всёравно хоть что-то.

где можно найти библиотеку svga256.bgi?
что такое flat режим и как им пользоваться? adv/jump.gif


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
oleg1973
Дата 29.6.2004, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



shara
дак ты под что пишеш? виндос? дос?
в виндосе через директдрав рисуй
в досе напрямую лучше без всяких библиотек


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
shara
Дата 29.6.2004, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



я работаю в основном работаю в dos
но могу и в windowse порисовать директдравом если подскажешь как. лижбы картинка была многоцветовая и с нормальным разрешаловом.
я нашел библиотечку svga256.bgi можно ли поподробнее расказать как её пользоваться?
и от описания bmp файлов тоже не откажусь. biggrin.gif

Это сообщение отредактировал(а) shara - 30.6.2004, 05:39


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
Maxim Sabalyauskas
Дата 1.7.2004, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.7.2004

Репутация: нет
Всего: нет



Привет всем!

Shara, если тебя интересует прямой доступ к видеопамяти/видеокарте могу выслать кое-какую инфу: про VESA, EGA, VGA, SVGA и всё такое.

Сразу предупреждаю: проги, работающие с VESA (int 10h), под NT пахать не будут - это так, для информации. Так что если хочешь строить крутые графические приложения под Windows берись за DirectDraw и не парься. exclamation.gif

В своё время лучший графический режим, готорого я добился в Dos'е - это "1024x768 256 цветов", но опять-таки через страницы (окна), а вот 32-битного режима не пробовал! smile.gif

PS. А я тоже не откажусь от описания .bmp-файлов!

PM MAIL   Вверх
Конструктор
Дата 1.7.2004, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Пользоваться svga256.bgi очень просто.

Код

int d , m;
d = installuserdriver("svga256" , NULL);//Загружаем наш драйвер (вместь обычного egavga.bgi)
// другие режимы
// 0 - 320х240
// 1 - какой-то не стандарнтый, не помню точно может 640х400
// 2 - 640х480
// 3 - 800х600
// 4 - 1024х768
m = 0; //Установим режим

intigraph(&d , &m , "");

//далее используются ф-ции из graphics.h
//svga256.bgi, должна быть там же, где и ехешник.


PM MAIL WWW ICQ   Вверх
shara
Дата 1.7.2004, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



вобщем эта библиотечка svga256.bgi неплохая штука, но она медленно работает. но для некоторых простенькижх програм подойдёт. так-что, наверное, пошёл я учить DirexcDraw и всё такое (я и книгу нашёл). он то и быстрее (НАМНОГО!!! - сам видел), и в ДОСе не надо морочится, ато меня это все порядком достало.
но описалово для VESA если кому не лень всёже пришлите smile.gif.


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
Гость_Andy
Дата 15.7.2004, 22:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ХЭЛПП!!!!!!!!

Пытаюсь загрузить 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 всё работает.
А в других режимах нет! sad.gif

!!!!!!!!!!!!!!!!!ПОМОГИТЕ ПОЖАЛУЙСТА!!!!!!!!!!!!!!!!!!!!!!!!
  Вверх
dima_mak
Дата 16.7.2004, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



Цитата(Maxim @ 1.7.2004, 03:48)
Привет всем!

Shara, если тебя интересует прямой доступ к видеопамяти/видеокарте могу выслать кое-какую инфу: про VESA, EGA, VGA, SVGA и всё такое.

Сразу предупреждаю: проги, работающие с VESA (int 10h), под NT пахать не будут - это так, для информации. Так что если хочешь строить крутые графические приложения под Windows берись за DirectDraw и не парься. exclamation.gif

В своё время лучший графический режим, готорого я добился в Dos'е - это "1024x768 256 цветов", но опять-таки через страницы (окна), а вот 32-битного режима не пробовал! smile.gif

PS. А я тоже не откажусь от описания .bmp-файлов!

Вышли пожалуста мне свою инфу на мыло: [email protected]
PM MAIL   Вверх
dima_mak
Дата 16.7.2004, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



А у меня при попытке инициализации:
Код

int driver,mode,errorcode,xmax,ymax;
driver=installuserdriver("svga256",0);
mode=3;

initgraph(&driver,&mode,"");
/* read result of initialization */
errorcode = graphresult();

if (errorcode != grOk)  /* an error occurred */
{
  printf("Graphics error: %s\n", grapherrormsg(errorcode));
  printf("Press any key to halt:");

}
xmax = getmaxx();
ymax = getmaxy();

outtext((char *)xmax);
line(0,0,799,599);
getch();

ошибок не говорит, но и линию не рисует и лампочка на мониторе начинает мигать(как в спящем режиме)
PM MAIL   Вверх
dima_mak
Дата 16.7.2004, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист любитель
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.5.2004

Репутация: нет
Всего: нет



А при модэ=0 при попытке нарисовать линию выдаёт
Цитата

16-разрядная подсистема MS-DOS
________
Turbo C++ IDE
Процессор NTVDM обнаружил недопустимую инструкцию.
CS:d002 IP:0000 OP:ff 3f ff 1f ff
Для завершения раб. приложения нажмите "Закрыть".

PM MAIL   Вверх
shara
Дата 17.7.2004, 03:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



dima_mak
лампочка мигает потому-что или библиотека не понимает твою видеокарту или комп не поддерживает такое разришение(покрайней мере заданное таким образом) или ещё что-то в этом роде.
вобщем, народ, не партесь. мой вам совет, пишите под Win ато будет такая куча проблем со скоростью работы с графикой и совместимостью програм с другими компами что мне даже представить страшно. если вам надо работать с графикой - то купите себе книгу по DirectX вчастности по DirectDraw и учите её, мне этото вариант больше нравится, хотя кто его знает.
и еще одно эта библиотека SVGA256.bgi так медленно работает что её можно нормально использовать только на самом маленьком разрешании. (сам видел) sad.gif


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
Конструктор
Дата 19.7.2004, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Цитата
еще одно эта библиотека SVGA256.bgi так медленно работает что её можно нормально использовать только на самом маленьком разрешании. (сам видел) sad.gif


Не знаю, у меня на 486 33МГц все нормально работает (в смысле работало) если использовать вместе с MTX библиотечкой. Вполне шустро, только мерцает иногда зараза при перерисовке.

PM MAIL WWW ICQ   Вверх
Graf Zeppelin
Дата 1.8.2004, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 28.3.2004

Репутация: нет
Всего: 1



У меня тоже выбрасывает сообщение об ошибке sad.gif
--------------------
Jah, help me!
PM MAIL   Вверх
Mysterio
Дата 3.8.2004, 09:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Hi all.
Чего-то меня достала эта SVGA256.bgi. С ней куча проблем(типа MODE NOT SUPPORTED ON THIS CARD {хотя вроде и GeForce440, и на другом компе тоже самое пишет {TsengLabsPCI(2M)} и просто не хочет переходить в графику(мигает курсор доса вверху,ошибок не выдаёт,а само типа рисует{//задержка})});
SVGA режим пашет только через прямой доступ к видеопамяти, а от этой .bgi я добился только 320x200 256цв.(это стандартн.VGA режим). Если кому интересно, то вот инициализация через VESA в 640x480x256(было на каком-то сайте)
Код
#include <conio.h>
#include <stdio.h>
#include <dos.h>
void setsvga ( int );
void display256( );
void set_pixel64 ( int, int, unsigned char );
main( )
{
     clrscr();
     display256();
     return (0);
}
void display256( )
{
     setsvga ( 0x101 );
          for(int x1=0;x1<300;x1++)
              for(int y1=0;y1<480;y1++)
                set_pixel64(x1*2+1,y1,y1);
  for(x1=256*2.3;x1>0;x1-=2)//тут можно помутить
         for(int y1=0;y1<480;y1++)
             set_pixel64(x1,y1,x1/2);
     getch( );
     setsvga ( 0x003 );//нормальный TEXT MODE
}
void setsvga ( int m )
{
     union REGS i, o;
     i.x.ax = 0x4f02;
     i.x.bx = m;
     int86 ( 16, &i, &o );
}
void set_vesa_seg ( int bank_number )
{
     union REGS i, o;
     i.x.ax = 0x4F05;
     i.x.bx = 0;
     i.x.dx = bank_number;
     int86 ( 16, &i, &o );
}
void set_pixel64 ( int x, int y, unsigned char color )
{
     unsigned short curr_vesa_seg = 0xffff;
     unsigned short vesa_seg,vesa_offset;
     unsigned long seg_size = (0xffff) + 1L;
     unsigned long offset;
     offset = ( ( unsigned long ) y * ( unsigned long ) 640 + ( unsigned long ) x );
     vesa_seg = offset / seg_size;
     vesa_offset = offset % seg_size;
     if ( vesa_seg != curr_vesa_seg )
     {
    set_vesa_seg ( vesa_seg );
    curr_vesa_seg = vesa_seg;
     }
     pokeb ( 0xA000, ( unsigned ) vesa_offset, color );
}
.И кучка режимов для setsvga [/quote]
100H - 640x400x256
101H - 640x480x256 //16 цветов не привожу
103H - 800x600x256
105H - 1024x768x256
107H - 1280x1024x256//дальше текстовые до
10DH - 320x200x32768... и т.д.(можно эксперементировать до 11AH)[quote]
Мне хотелось бы иметь 112H(640x480x64k цвет),но мозги уже сворачиваюстя в трубочку.Можть кто подскажет? sample.gif
  Вверх
oleg1973
Дата 3.8.2004, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



ddraw поможет


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Mysterio
Дата 3.8.2004, 18:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Лично я ненавижу DIRECTы всякие и винDOS в том числе. Я вообще пытаю свою систему.
  Вверх
Guest
Дата 3.10.2004, 16:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











это потому что у тебя либо манитор либо видюха не поддерживает такой режим или не поддерживает такой режим при такой попытке его активировать. у меня на 800*600 тоже лампочка мигает, помняй разрешалово.
и вообще народ, даю вам ХОРОШИЙ совет: не работайте на прямую с видео, это медленно, неудобно и не всегда выходит sad.gif я убедился на собственном опыте. если надо работать с графой пользуйтесь например DirectX ом результаты меня ВПОЛНЕ УСТРАИВАЮТ.
  Вверх
Maxim Sabalyauskas
Дата 12.10.2004, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.7.2004

Репутация: нет
Всего: нет



Цитата
Лично я ненавижу DIRECTы всякие и винDOS в том числе. Я вообще пытаю свою систему.

Ненавидите DIRECTы - попробуйте OPENы (в смысле ГээЛы).

Вот что! Как насчёт того, чтобы написать свою библиотеку графики?

Всем, кто хочет написать (или уже пишет) свои дрова, тулкиты и т.п., давайте дружить по имэйлу - поделимся опытом!
adv/party.gif


PM MAIL   Вверх
Mysterio
Дата 28.12.2004, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Планирующий
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 28.12.2004

Репутация: нет
Всего: нет



Ну уж нет,люди. Мне нужен либо DOS либо сразу прерываниями. Насчет мыла идея заманчивая smile
И еще вопрос. У меня в VESA режиме(любом) получается всего одна страница.Надо хотя-бы 2.
Или это делается по-другому? smile
PM MAIL   Вверх
Michey
Дата 20.3.2005, 05:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите пожалуйста.
В проге, если открыть забитые строки, то всё перестаёт работать.

Цель: мне необходимо выводить одиночные символы графическом режиме DOS, но всё время прога выдаёт весь массив или если это одна переменная, то символ и букву "я". Почему????? smile Уже полторы недели мучаюсь. smile
Через указатель - весь массив.
Через посредника - весь массив.
С массива [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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 5
Регистрация: 20.3.2005
Где: Каралия

Репутация: нет
Всего: нет



Да, теперь я зарегестрировался smile
PM MAIL ICQ   Вверх
Guest
Дата 21.10.2005, 20:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











спасибо
  Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0742 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.