Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Grafika & DOS

[es] :: C/C++ programiranje :: Grafika & DOS

[ Pregleda: 3867 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Voodoo
Novi Beograd

Član broj: 3508
Poruke: 488
*.verat.net



+1 Profil

icon Grafika & DOS15.06.2002. u 16:30 - pre 266 meseci
Ljudi, treba mi pomoc oko grafike u C kompajlerima za DOS.

Kao sto znate, Turbo C ima svoje funkcije (initgraph...) i drajvere (egavga, cga) za graficke modove. Ostali kompajleri to nemaju. Dajte mi adresu nekoj manuala za pristupanje grafickim modovima (makar preko direktnih pristupa VRAM-u).

Takodje, kako da u ostalim kompajlerima izvedem clrscr (bez CLS poziva u DOS) i delay?
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.yubc.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Grafika & DOS15.06.2002. u 20:19 - pre 266 meseci
Ono što ti zapravo tražiš je upotreba INT 0x10 pod DOS-om (ovo zapravo obezbeđuje sam BIOS, ali kako od ,,popularnih'' operativnih sistema jedino DOS ,,ne dira u tuđe'', pripisujemo ga njemu). INT 10h je interfejs prema VGA/EGA i ostalim karticama (čak i VBE 1, 2 ,,žive'' na njemu sa većim brojevima funkcija).

E sada kada znaš šta treba da radiš, posao pretrage ti je, nadam se, mnogo lakši.

U osnovi to ide ovako, u registar AH i AL ubacuješ parametre (broj funkcije u neki od njih, a po potrebi i još neke stvari) i zatim pozivaš INT 10h (ili kako već da se označavaju heksadekadni brojevi). (čemu služi ovaj pasus; niti sam objasnio precizno, niti sam dao konkretan primer; ne znam ni sam, ali ostaviću ga :)

Preporučio bih ti da potražiš Ralf's Interrupt List koja daje detalje i za mnogo više od toga što ti tražiš. Kako, radi kompatibilnosti sa raznim grafičkim karticama, preporučujem upotrebu VBE (popularno VESA, pogledaj www.vesa.org), možeš i da skineš neku njihovu specifikaciju (1.2 za starije kartice i klasičan ,,windows'' princip, 2.0 za ,,novije'' kartice---1996.+, i direktan pristup celoj memoriji kartice preko framebuffer-a).

VBE će ti omogućiti detekciju svih bitnijih parametara grafičke kartice, jedino će biti problem monitor (a za to se plaća specifikacija sa VESA.org, pa retko ko to ume da programira; mada u novijem XFree86 4.1.0 postoji ta implementacija).

Ukoliko imaš problema sa nalaženjem neke od ovih specifikacija (VBE 1.2, Ralf's IL, VBE 2.0), slobodno javi, i postaviću ih na neko lako dostupno mesto.

Takođe, ukoliko te interesuje, ja imam neki program koji sam radio kao ,,seminarski'' rad u Pascalu (znači najverovatnije ne što ti tražiš, ali ideja je ista), pre nekih 4--6 godina koji je koristio VBE 1.2.

Nadam se da je ovo dovoljno, pa prema tome

Toliko.xB9 0xC7
0xC3 0x47 0xD1 0x01
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.ptt.yu

ICQ: 44582291


+58 Profil

icon Re: Grafika & DOS16.06.2002. u 00:02 - pre 266 meseci
evo ja sam se tim bavio pre godinu dana mozda pa mogu da ti dam gotove stvari
ovo slobodno copy/paste u svoj kod jer je koriscen inline asm a koristis ih kao normalne c funkcije

koristi ovu funkciju za prebacivanje u zeljeni video mod
za zaljeni video mod konsultuj manual (npr lep i pregledan programcic helppc ili sto t0wk preferira ruznu i nezgrapnu gomilu text fajlova zvanih ralph brown interupt list :) )

Code:

/**********************************************************************
 * Funkcija "void setmode(int mode)" postavlja trazeni video mod
 * 0x13 - 320x200x256
 * 0x03 - dos text mode
 **********************************************************************/

void setmode(int mode)
{
  asm
  {
     mov ax,mode
     int 0x10
  }
}



ova funkcija ce na odredjenoj kordinati u vga modu da iscrta tacku ali to ne radi preko interapta vec direktnim menjanjem memorije u segmentu koji je mapiran kao video memorija, ovaj nacin je brzi od prvog mada to danas nema mnogo znacaja

Code:

// parametri funkcije:
// x - x kordinata 
// y - y kordinata
// c - boja tacke (256 mogucih)

void pp(int x,int y, unsigned char c)
{
    asm 
{
    mov ax, 0xA000
    mov es, ax
    mov bx, [x]
    mov dx, [y]
    xchg dh, dl
    mov al, [c]
    mov di, dx
    shr di, 2
    add di, dx
    add di, bx
    stosb
}
}

samo jos da napomenem da se x kordinata gleda odozgo na dole, znaci kordinate 0,0 su ti gornja leva tacka ekrana
kordinata 320, 200 ti je donja desna

ovo ne pokusavaj da koristis u win32 kompajleru jer je pravljeno za 16 bitno dos okruzenje
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Grafika & DOS16.06.2002. u 12:48 - pre 266 meseci
Vidite da coveku treba pomoc sa BGI (Borland Graphics Interface), a ne sa interaptima, BIOS-om i VESA standardom (starim)...

Elem sve BGI rutine su fantasticno objasnjene i dokumentovane u Turbo C HELP-u, znaci lepo samo idi na graphics.h i pritisni CTRL+F1 i dobices magicni HELP u kome (to ponavljam vec vise puta, do sada bi i vrapci zapamtili) za SVAKU Turbo C funkciju postoji ODLICNO uputstvo sa PRIMEROM kako se ista koristi! Ne treba nikakva literatura, nikakve knjige, brosure, kursevi - prosto se jednim F1 ili CTRL-F1 dobije fantastican manual!

Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Grafika & DOS16.06.2002. u 12:53 - pre 266 meseci
Koliko se secam i Microsoft C/C++ je imao neki svoj odgovor na BGI, ili gresim?
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.ptt.yu

ICQ: 44582291


+58 Profil

icon Re: Grafika & DOS16.06.2002. u 14:45 - pre 266 meseci
da zaboravio sam da kazem da cls mozes preko system("cls");
koliko se secam a za delay ne znam
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.ptt.yu



Profil

icon Re: Grafika & DOS16.06.2002. u 16:17 - pre 266 meseci
Citat:
Voodoo:

Takodje, kako da u ostalim kompajlerima izvedem clrscr (bez CLS poziva u DOS) i delay?

Posto izgleda da radis u DOS-u onda mozes slobodno da koristis clrscr().
header: conio.h

prototip: void clrscr(void);

Ali ponavljam ako trebas u DOS-u da obrises ekran, u suprotnom (Win32) nemoj da koristis ovu funkciju.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.yubc.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Grafika & DOS17.06.2002. u 01:00 - pre 266 meseci
Citat:
leka:
Vidite da coveku treba pomoc sa BGI (Borland Graphics Interface), a ne sa interaptima, BIOS-om i VESA standardom (starim)...

Zar ne reče ,,ostali kompajleri''???

Ako ga, pak, zaista zanima BGI, onda je leka potpuno u pravu---Turbo C help sistem je i više nego dovoljan za to.

Tada još mogu da preporučim SVGABGI (tako nešto se zovu, BGI drajveri koji koriste VBE, pa je moguće iz Borlandovih proizvoda koristiti i veće rezolucije sa 8-, 16- i 24-bitnom ,,dubinom'').

U svakom slučaju, VBE1.2 (bar!) je stalna preporuka.

Toliko.
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Grafika & DOS17.06.2002. u 09:40 - pre 266 meseci
Da li neko zna da li je neka framebuffer biblioteka portovana na DOS? Pogledacu na www.directfb.org u svakom slučaju...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Voodoo
Novi Beograd

Član broj: 3508
Poruke: 488
*.verat.net



+1 Profil

icon Re: Grafika & DOS17.06.2002. u 17:55 - pre 266 meseci
1. Znam i ja za system("CLS");
2. Ne treba mi pomoc oko BGI-ja, jer ga znam odlicno, a takodje i znam za magicnu kombinaciju Ctrl+F1. Takodje, BGI je previse spor. Trebaju mi direktni pristupi kako bi ih koristio u ostalim kompajlerima (Watcom, Digital Mars itd.)
3. Jedino conio.h u Turbo C-u ima clrscr i dos.h ima delay. Ostali kompajleri nemaju (imam ih brdo i probao sam u svima).

Hvala vam svima na pomoci.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.yubc.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: Grafika & DOS17.06.2002. u 19:12 - pre 266 meseci
Citat:
leka:
Da li neko zna da li je neka framebuffer biblioteka portovana na DOS? Pogledacu na www.directfb.org u svakom slučaju...


Pretraga ,,Linux DOS framebuffer library'' na SvežemMesu/FrešMitu mi je dala samo jedan izlaz:

Citat:

GRX

About:
GRX is a 2D graphics library originally written for DJGPP. It supports DOS, Linux console (svgalib and framebuffer drivers), X11, and Win32 (using the Mingw compiler).

http://www.gnu.de/software/GRX/


Jednostavno, zar ne? :)

Živeli
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Grafika & DOS18.06.2002. u 19:03 - pre 265 meseci
Upravo si pomenuo stvar koje je trebalo odmah da se setim - SVGAlib! SVGALib radi pod DOS-om mislim i kompajlira se bez problema na DJGPP-u! :)))
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

[es] :: C/C++ programiranje :: Grafika & DOS

[ Pregleda: 3867 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.