Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 26 • Страница 1 из 21  2  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
Ветка создана для обсуждения графических режимов и работы с ними под DOS-ом. (Pascal, C)
Первый вопрос: нужен режим не менее 65k (16M...) цветов и 640x480. Пишу на Borland C 3.0 ( :P ). 640x480 и 16 цветов (VGAHI) нафиг не надо.
Научился, меняя палитру, выводить 16-цветные bmp... :)
Слышал про VESA:
Код:
asm {
  mov ax,4f02h
  mov bx,0112h
  int 10h
}
через это прерывание устанавливается вроде режим 640x480x16M... оптимальный ли это вариант работы, да и как вообще с ним работать? :D
или есть что-то более рациональное?
PS если у кого есть "умные" BGI дрова с такими характеристиками, буду рад взять :)

В стадии разработки проекты:
2DMark (тесты скорей больше проца-памяти, но рисует :D )
SlideShow (или даже графический просмотрщик может...)
PaintD ( Paint для DOS-а... :) )

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5



Партнер
 

Member
Статус: Не в сети
Регистрация: 30.09.2006
Откуда: Ростов-на-Дону
TuneD
Могу драйвер дать, который поддерживает 1024х768 256 цветов!!!
Добавлено спустя 43 секунды
TuneD писал(а):
PaintD ( Paint для DOS-а... Smile )

Можешь заценить мой Paint на Паскале, в ПС лежит...

_________________
Я знаю, что ничего не знаю. Но некоторые не знают даже этого!


 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
vo1 писал(а):
Могу драйвер дать, который поддерживает 1024х768 256 цветов!!!

было б неплохо, на ПС или где-нидь выложи. он поддерживает стандартные функции graphics.h?
вообще вывод setpixel() работает крайне медленно. есть способ быстрее выводить пиксели?

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5


 

Member
Статус: Не в сети
Регистрация: 30.09.2006
Откуда: Ростов-на-Дону
TuneD
Выложил, но загрузка что-то глючит. Может, получится скачать...
Добавлено спустя 2 минуты, 38 секунд
Пример работы с библиотекой:

Код:
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
#include <dos.h>


int huge mode(void)
{
return(4);
}

void puttexel(int x,int y,int z,int col)
{

if (z>=0) putpixel(x+1024/2,-y+768/2,z/150+16+16/2-8+col*16);
 else putpixel(x+1024/2,-y+768/2,z/250-16-16/2+col*16);

}

float z(float x,float y)
{
float z;
z=2100*sin(sin(10*(cos(x*0.04)+sin(y*0.04)))+log(fabs(exp(sin(x*0.01)*12)*log(fabs(y)+1))+1))+100/(fabs(x*0.0001)+0.0001);
return(z);
}


void main()
{
double x,y,z1,z2,z3,z4,i,j,stp,eps,col,phi,t,maxcol;
int gd,gm,n=0;

gd=installuserdriver("svga256",mode);
gm=4;
initgraph(&gd,&gm,"d:\\tc\\bgi\");
for (x=-1024/2;x<1024/2;x+=1)
  for (y=-768/2;y<768/2;y+=1)
    puttexel(x,y,z(x,y),0);

getch();

}

Добавлено спустя 1 минуту, 23 секунды
TuneD писал(а):
он поддерживает стандартные функции graphics.h?

Да.
Добавлено спустя 7 минут, 38 секунд
TuneD
Во, все, качай и радуйся!
http://cp.people.overclockers.ru/cgi-bi ... VGA256.rar
Добавлено спустя 8 минут, 23 секунды
TuneD писал(а):
640x480x16M

Ну, 16М я не встречал, но ИМХО 256 и 16 - огромная разница все равно!
Плюс высокое разрешение!
Добавлено спустя 1 минуту, 35 секунд
TuneD писал(а):
есть способ быстрее выводить пиксели?

Может есть, но мне они неведомы. Полагаю, без Ассемблера никак. :(

_________________
Я знаю, что ничего не знаю. Но некоторые не знают даже этого!


 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
vo1 писал(а):
Пример работы с библиотекой:

чёт не пойму, как эта красота получается :D где взял?
vo1 писал(а):
Во, все, качай и радуйся!

Ну да, разница между 16 и 256 цветами есть... :wink:
vo1 писал(а):
Может есть, но мне они неведомы

да есть, тока надо работать через асемблер. буду спрашивать...
PS putpixel() даёт на моей профильной машине заполнение в 2.98 fps на 1024x768, а в 640x480 - 7.64 :) . Итого: 2,35 мегапикс./с
PS2 графический редактор прикольный :beer: тока вот твои bmp ACD See не читает... :roll:

Начал в общем я работу с модулем. Сейчас пытаюсь менять палитру для вывода 256-цветных bmp. пока не успешно :oops:

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5


 

Member
Статус: Не в сети
Регистрация: 30.09.2006
Откуда: Ростов-на-Дону
TuneD писал(а):
чёт не пойму, как эта красота получается Very Happy где взял?

Сам написал - долго эксперементировал. А изначально прога должна была поверхности рисовать.
Добавлено спустя 2 минуты, 7 секунд
TuneD писал(а):
тока вот твои bmp ACD See не читает...

Странно... Пэинт вроде читал...
Добавлено спустя 14 минут, 14 секунд
Посмотри, кстати, как хитро реализовано сохранение в этом формате. Долбался с нуля... Чтоб не глючило ничего...
Добавлено спустя 16 минут, 22 секунды
Имя файла нужно давать с расширением bmp. Имя файла не должно превышать 8 знаков.

_________________
Я знаю, что ничего не знаю. Но некоторые не знают даже этого!


 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
vo1 писал(а):
Посмотри, кстати, как хитро реализовано сохранение в этом формате

посмотрю сегодня-завтра. дык есть же спецификации к формату bmp. я долбался с реализацией тоже дооолго во время летней практики :D
vo1 писал(а):
Имя файла не должно превышать 8 знаков

да это я всё знаю... :wink:
TuneD писал(а):
Сейчас пытаюсь менять палитру для вывода 256-цветных bmp. пока не успешно

успешно научился делать вывод 256-цветных bmp, предварительно конвертированных из 16M ч/з ACD See.
по качеству отличий от полноценных нет. и это в DOS-е!!!! :dance:
ещё написал алгоритм "урезания" цветов до 256 из 16M. так что могу выводить любые bmp-шки :) правда урезание пока на уровне Paint-а, но это первый метод, пришедший в голову... :D

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5


 

Member
Статус: Не в сети
Регистрация: 30.09.2006
Откуда: Ростов-на-Дону
TuneD писал(а):
дык есть же спецификации к формату bmp

Я о них тогда НИЧЕГО не знал...

_________________
Я знаю, что ничего не знаю. Но некоторые не знают даже этого!


 

Member
Статус: Не в сети
Регистрация: 30.09.2006
Откуда: Ростов-на-Дону
TuneD, лови еще!
Код:
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
#include <dos.h>

int x[256],y[256],i,j,stp,eps,col,phi,t,rx,ry;
int gd,gm,n=0;

int huge mode(void)
{
return(4);
}
void main()
{
randomize();
gd=installuserdriver("svga256",mode);
gm=4;
for (i=0;i<256;i++)
{
x[i]=1024/2;
y[i]=768/2;
}
initgraph(&gd,&gm,"d:\\tc\\bgi");

while (1==1)
{

for (i=0;i<256;i++)
{
t=random(8);
switch (t)
{
case 0: x[i]+=1;break;
case 1: x[i]-=1;break;
case 2: y[i]+=1;break;
case 3: y[i]-=1;break;
case 4: x[i]+=1;y[i]+=1;break;
case 5: x[i]-=1;y[i]-=1;break;
case 6: y[i]-=1;x[i]+=1;break;
case 7: y[i]+=1;x[i]-=1;break;
}
if (x[i]>1024) x[i]=1024;
if (x[i]<1) x[i]=1;
if (y[i]<1) y[i]=1;
if (y[i]>768) y[i]=768;


putpixel(x[i],y[i],i);

}


}
}

_________________
Я знаю, что ничего не знаю. Но некоторые не знают даже этого!


 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
vo1 писал(а):
TuneD, лови еще!

прикольная вещь :wink: тока выход не предусмотрел... :lol:

PS У меня есть готовый слайдшоу для 24-битных bmp!! :super: на ПС бери если хочешь.
выводит тока 24-битные bmp и фото до 1024x768
выход: ESCAPE :D

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5


 

Member
Статус: Не в сети
Регистрация: 30.09.2006
Откуда: Ростов-на-Дону
TuneD писал(а):
тока выход не предусмотрел...

Ctrl-break rullez!!!

TuneD писал(а):
PS У меня есть готовый слайдшоу для 24-битных bmp!! Супер! на ПС бери если хочешь. выводит тока 24-битные bmp и фото до 1024x768

Как замутил????? Нашел 64К - драйвер? РЕСПЕКТ!!!! Ща прогой, которая поверхности рисует,
займусь...
Добавлено спустя 25 минут, 24 секунды
TuneD, что-то в C++ не пашет твоя библиотека... Режимы как ставить?

_________________
Я знаю, что ничего не знаю. Но некоторые не знают даже этого!


 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
vo1 писал(а):
Нашел 64К - драйвер? РЕСПЕКТ!!!!

полазил по исходникам инета :D ещё есть VESA драйвер, но либо он, либо я тугой (?) :spy: - в общем там та же палитра из 256 цветов, их мона задавать, но выгоды я так и не заметил по сравнению с SVGA256 :roll:

нам книжки по компьютерной графике наконец-то выдали в универе. там видел что-то VESA-подобное. займуся я... :hitrost:
vo1 писал(а):
что-то в C++ не пашет твоя библиотека... Режимы как ставить?

ты про какой C++ ? :)
Режимы как? :)
Код:
int huge mode(void)
{ return(4); // тока не понимаю зачем ето...
int gd=instralluserdriver("SVGA64k", mode), gm=5; //1024x768
initgraph(&gd,&gm,"");

В общем такие варианты:
0 - 320x200
1 - 640x350
2 - 640x400
3 - 640x480
4 - 800x600
5 - 1024x768
6 - 1280x1024

А как же эмпирический тык? ты ж вроде тоже программер. у меня нет к дровам спецификаций :D
getmaxmode() - количество режимов в драйвере
getmaxx(), getmaxy() - без комментариев... :)
PS по поводу вывода пикселей:
1) setrgbpalette(0,R,G,B) // нужный тебе оттенок: 0<=R<32, 0<=G<64, 0<=B<32
2) putpixel(x,y,0)
короче номер цвета любой :oops: и каждый раз нужно, ибо палитры нету...
но вывод достаточно шустренький :wink:
ох скока нервных клеток убил кроме 2-3 часов раскопок, пока допёр до "правильного вывода" из-за зелёного оттенка и отсутствия палитры... :abuse:

ещё: если сумеешь каким-то макаром считать цвет с экрана, просвети!!! :D

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5


 

Member
Статус: Не в сети
Регистрация: 30.09.2006
Откуда: Ростов-на-Дону
TuneD писал(а):
А как же эмпирический тык? ты ж вроде тоже программер. у меня нет к дровам спецификаций

Думаешь, не тыкал?

TuneD писал(а):
Код: int huge mode(void) { return(4); // тока не понимаю зачем ето... int gd=instralluserdriver("SVGA64k", mode), gm=5; //1024x768 initgraph(&gd,&gm,"");

Все равно черный экран...

Кстати, после одного из запусков ТurboС++ выкинуло в винду с ошибкой... И... изображение на мониторе сильно задрожало :mad2: :mad2: :mad2: :?:
Дрожь прекратилась после запуска С++ с поседующим выходом из него.
Подобное наблюдается с Дос-игрой Poker3... Тоже вылетает, рабочий стол винды дрожит... Дрожь пропадает после запуска другого ДОС-приложения.
А на Х1600ХТ все запускалось!!!
Самое интересное, что твое "слайд-шоу" пашет без проблем... :insane:

_________________
Я знаю, что ничего не знаю. Но некоторые не знают даже этого!


 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
ща кину на ПС обновлённую версию с выбором режима :)
Цитата:
Самое интересное, что твое "слайд-шоу" пашет без проблем

может проблема в компиляторе?
я использую Borland C++ 3.1
PS у тебя "i86.h" не завалялся. посмотри :)

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5


 

Member
Статус: Не в сети
Регистрация: 30.09.2006
Откуда: Ростов-на-Дону
TuneD писал(а):
может проблема в компиляторе?

Вряд ли...
Проблема в кривых дровах винды для ДОСа...

_________________
Я знаю, что ничего не знаю. Но некоторые не знают даже этого!


 

Member
Статус: Не в сети
Регистрация: 19.10.2006
Откуда: Нижний Новгород
TuneD Держи, посылаю инфу, самому некогда разбираться, но вроде кое-что полезное есть: http://cp.people.overclockers.ru/cgi-bi ... e=SVGA.rar


 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
DiMMension благодарю. вкратце прощёлкал. почитаю. там всё на асме. думаю, получится ли вставками в BC обойтись? :)

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5


 

Member
Статус: Не в сети
Регистрация: 19.10.2006
Откуда: Нижний Новгород
TuneD Почему нет? Только небольшой совет - если хочешь увеличить (в разы ) быстродействие, переходи полностью на ASM, так как вставки - это обращения к подпрограммам каждый раз, что ООЧЕНЬ долго (дольше обычных команд Pascal, C++, не говоря уже о чистом ASM, сам сравнивал).


 

Member
Статус: Не в сети
Регистрация: 29.05.2005
Откуда: Белгород
DiMMension писал(а):
переходи полностью на ASM

знаешь, на нём далеко не уедешь... :roll: особенно при расширении кода программы...
скажу честно, я не силён в нём на столько, чтобы писать хоть какую-то сурьёзную прогу,.. :)
PS какой компилятор/среду разработки посоветуешь для asm?

_________________
Взрослеем. Возможностей стало больше, времени - меньше.
долгосрочно общался:
CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5


 

Member
Статус: Не в сети
Регистрация: 19.10.2006
Откуда: Нижний Новгород
TuneD Тогда делай на нем целиком откомпилированные модули и подключай в Pascal или C++.
Посоветовать конкретный компилятор сейчас не могу, плотно занимался программированием 10..15 лет назад, тогда использовал TASM (Borland), а в основном сидел на Turbo Pascal, немного Borland C++.
Сейчас программирую редко, отстал :(
Кстати, тормознуло меня в развитии в свое время как раз отсутствие доступных средств обработки SVGA... :wink:
Иногда порываюсь чего-нибудь подучить посовременнее, но получается все как-то урывками. Но в своей логике по-прежнему уверен, если надо будет, любой язык осилить уверен, смогу.
И тебе почему перейти на ASM посоветовал, целиком на нем прогу писать необязательно (неудобно), но модулями (содержащими готовые наборы подпрограмм) получится намного эффективнее код, а для этого ASM знать надо получше.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 26 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan