Kuinka koodata grafiikkaa C++:lla?

Sattuisko joku tietämään, kuinka C :lla koodataan grafiikkaa? Ongelma on lähinnä grafiikkakirjaston nimessä, C:ssä ja vissiin C :nkin varhaisemmissa versioissa (ainakin 3.0:ssa) se oli graphics.h (tai graph.h tai jotain sellaista...), mutta C 6.0 antaa kyseisestä kirjastosta errorin.
111224
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

Jos vaikka imuttaisi ilmaisen kääntäjän DJGPP ja siiheen grafiikka kirjaston Allegro
#Include

Äänestä

tee ite omat kirjastot. Noi valmiit on ihan sairaan hitaita. Ite tein omat kirjastot jotka on 2^x kertaa nopeemmat. (Hieman itsekehua ;) )

Äänestä
  • Laita ne omat grafiikkakirjastot jakoon ja kerro missä ne ovat?

    Äänestä

Kiitoksia neuvosta, ainoa ongelma on vain siinä että kuinka kummassa koodaan oman grafiikkakirjaston???

Äänestä
  • Imuttele Ralf Brownin Interrupt list, sieltä löytyy vaikka mitä hauskaa.
    http://www-2.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/files.html

    esim Borland C/C :lla (dos):

    void mode13(){ // 320x200x256 vga-moodi
    asm{
    mov ax,0x0013
    int 0x10
    }
    }

    void pset(int x, int y, char col){ // pisteen piirto mode13:ssa
    char *scrnptr=(char far*)0x0a0000000;
    scrnptr[x y*320]=col;
    }

    void setpalette(char i, char r, char g, char b){ //vga-tilassa paletin vaihto
    asm{
    mov dx,0x3e8
    outb dx,i
    mov dx,0x3e9
    outb dx,r
    outb dx,g
    outb dx,b
    }
    }

    int main(){ //dorka testiohjelma
    int x,y;
    mode13();
    for (y=0;y

    Äänestä

  • Punikki & 7 hyypiötä kirjoitti:

    Imuttele Ralf Brownin Interrupt list, sieltä löytyy vaikka mitä hauskaa.
    http://www-2.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/files.html

    esim Borland C/C :lla (dos):

    void mode13(){ // 320x200x256 vga-moodi
    asm{
    mov ax,0x0013
    int 0x10
    }
    }

    void pset(int x, int y, char col){ // pisteen piirto mode13:ssa
    char *scrnptr=(char far*)0x0a0000000;
    scrnptr[x y*320]=col;
    }

    void setpalette(char i, char r, char g, char b){ //vga-tilassa paletin vaihto
    asm{
    mov dx,0x3e8
    outb dx,i
    mov dx,0x3e9
    outb dx,r
    outb dx,g
    outb dx,b
    }
    }

    int main(){ //dorka testiohjelma
    int x,y;
    mode13();
    for (y=0;y

    Mut alussa on hyvä käyttää valmiita grafiikka kirjastoja. Sulkin on tilas 320*200, Sivutuksessahan ne ongelmat alkaa. Enemmämkö 64kt

    Äänestä

  • Punikki & 7 hyypiötä kirjoitti:

    Imuttele Ralf Brownin Interrupt list, sieltä löytyy vaikka mitä hauskaa.
    http://www-2.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/files.html

    esim Borland C/C :lla (dos):

    void mode13(){ // 320x200x256 vga-moodi
    asm{
    mov ax,0x0013
    int 0x10
    }
    }

    void pset(int x, int y, char col){ // pisteen piirto mode13:ssa
    char *scrnptr=(char far*)0x0a0000000;
    scrnptr[x y*320]=col;
    }

    void setpalette(char i, char r, char g, char b){ //vga-tilassa paletin vaihto
    asm{
    mov dx,0x3e8
    outb dx,i
    mov dx,0x3e9
    outb dx,r
    outb dx,g
    outb dx,b
    }
    }

    int main(){ //dorka testiohjelma
    int x,y;
    mode13();
    for (y=0;y

    Vaikka tuo oli hatusta temmattu niin muiden kannattaa aina muistaa tuplapuskurointi(double buffer), jos aikoo tehdä paljon videomuistin arvoja lyhyessä ajassa muuttelivia ohjelmia. Se on paljon nopeampi ja ei näy videomuistin hitaudesta johtuvaa kuvan repeilyä,säröilyä ja vilkkumista.

    Äänestä

täältä se lähtee:
www.opengl.org
www.gamedev.net

tutoriaaleja:
nehe.gamedev.net
www.gametutorials.com

Äänestä
  • No niin, kiitoksia paljon vinkeistä vinkeistä mutta perusongelma on edelleen ratkaisematta. Joten jos ja kun en omista aavistustakaan siitä, kuinka luodaan omia grafiikkakirjastoja, kuinka Microsoft Visual C 6.0 -ympäristössä käytetään edes inline assembleria ja kun käsittääkseni kyseisessä ympäristössä on olemassa valmiita grafiikkakirjastoja, niin millaisella koodinpätkällä saan nämä valmiit kirjastot käyttöön? Mikäli jollakulla olisi tarjota koodinpätkä, joka copy-pastettuna suoraan VB 6.0:aan piirtäisi esim. ympyrän mustalle kuvaruudulle tai jotain muuta vastaavaa, tuntisin itseni paljon viisaammaksi. Mutta kiitos kuitenkin jo kaikille apuaan tarjonneille.

    Äänestä

  • Eelis kirjoitti:

    No niin, kiitoksia paljon vinkeistä vinkeistä mutta perusongelma on edelleen ratkaisematta. Joten jos ja kun en omista aavistustakaan siitä, kuinka luodaan omia grafiikkakirjastoja, kuinka Microsoft Visual C 6.0 -ympäristössä käytetään edes inline assembleria ja kun käsittääkseni kyseisessä ympäristössä on olemassa valmiita grafiikkakirjastoja, niin millaisella koodinpätkällä saan nämä valmiit kirjastot käyttöön? Mikäli jollakulla olisi tarjota koodinpätkä, joka copy-pastettuna suoraan VB 6.0:aan piirtäisi esim. ympyrän mustalle kuvaruudulle tai jotain muuta vastaavaa, tuntisin itseni paljon viisaammaksi. Mutta kiitos kuitenkin jo kaikille apuaan tarjonneille.

    Kun kerran on kyse Windows-ohjelmoinnista niin kannattaa käyttää DirectX-rajapinnan DirectDraw-palveluja, jossa on erilaisia rutiineja 2D-piirtelyä varten. Itse en ole edes vielä hankkinut koko kääntäjää, joten en osaa vielä koodia sinulle kirjoittaa, mutta yleensä erilaiset manuaalit, joita löytyy kirjakaupasta/kirjastosta/netistä, selittävät hyvin, miten voit ottaa kyseiset kirjastot käyttöösi. Nykyisin ei minun mielestä kannata pahemmin itse alkaa tekemään grafiikkarutiineja, koska valmiit ovat yleensä optimoituja, mutta tietysti on tilanteita, joissa oma jälki on nopeampaa.

    Äänestä

Kommentoi aloitusta


Eelis kirjoitti:

Sattuisko joku tietämään, kuinka C :lla koodataan grafiikkaa? Ongelma on lähinnä grafiikkakirjaston nimessä, C:ssä ja vissiin C :nkin varhaisemmissa versioissa (ainakin 3.0:ssa) se oli graphics.h (tai graph.h tai jotain sellaista...), mutta C 6.0 antaa kyseisestä kirjastosta errorin.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu