Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: c++-grafiikkaa

Sivun loppuun

samlui [11.02.2005 14:01:18]

#

Moi olen miettinyt tässä että voiko c++:lla tehdä grafiikkaa ilman SDL:llää, allegroa, OpenGl, windowsia tai muuta vastaavaa. Eli onko jokin tyyli millä voi esim. vaihtaa jonkin ruudun pixelin väriä tms. Anteeksi etten oikein osaa selittää asiaa

remontti-reiska [11.02.2005 15:16:03]

#

Assembly on ainakin yksi vaihtoehto tehdä omat funktiot piirtämiseen. Tosin, en keksi siihen mitään järkevää syytä siihen, että pitäisi omat funktiot tuollaiseen tehdä.

Metabolix [11.02.2005 16:52:18]

#

Ongelmanahan tuossa on koodin portattavuus. DOSissa homma hoituu (ilman assemblyä) sisällyttämällä dos.h, josta löytyy funktio intr tai vastaava. Oli nimi mikä tahansa, sillä voi kuitenkin kutsua keskeytystä 13h sopivilla parametreillä, jolloin saa näyttötilaksi vaikkapa 320x200, 256 väriä. Sitten voi kirjoitella ruudulle suoralla muistinosoituksella. Helpommalla pääsee, kun käyttää valmista rajapintaa. Koodi porttautuu helpommin (jos valitsee sopivan rajapinnan), toimii nopeammin ja päästää helpommin käsiksi isompiin näyttötiloihin.

samlui [12.02.2005 11:21:40]

#

jaa, oli vain hauska tietää miten homma toimi, mutta kiitos vastauksista

iluwatar [13.02.2005 12:27:09]

#

C++ ei itsessään ota kantaa mihinkään pikseleihin. Grafiikan piirtämiseen tarvitset aina jonkun rajapinnan avuksi (GDI, SDL, OpenGL, DirectX tms.)

Metabolix [13.02.2005 13:04:09]

#

iluwatar kirjoitti:

C++ ei itsessään ota kantaa mihinkään pikseleihin. Grafiikan piirtämiseen tarvitset aina jonkun rajapinnan avuksi (GDI, SDL, OpenGL, DirectX tms.)

Jos DOSissa tekee, niin kyllä niihin pikseleihin pääsee käsiksi. Usko tai älä, mutta on ollut aika, jolloin ei ollut GDI:tä, SDL:ää, OpenGL:ää eikä DirectX:ää. Ja miten nuo sitten pääsevät käsiksi pikseleihin, jos niihin ei pääse käsiksi kuin rajapintojen kautta? C:llä ja C++:lla (tai paikoin assemblyllä) nuokin on kirjoitettu.

arcatan [13.02.2005 13:06:14]

#

iluwatar kirjoitti:

Grafiikan piirtämiseen tarvitset aina jonkun rajapinnan avuksi (GDI, SDL, OpenGL, DirectX tms.)

Tai sitten et. Kuten Metabolix yllä toteaa, esimerkiksi DOSissa (tai itse asiassa vaikka ilman käyttöjärjestelmää) homma onnistuu ihan vaan kutsumalla keskeytyksillä sopivan näyttötilan ja sitten tunkemalla niitä tavuja suoralla muistiinosoituksella. En sanoisi tätä rajapinnaksi.

jutti [13.02.2005 16:17:56]

#

Mutta vain masokisti lähtisi tekemään graafista ohjelmaa ilman jotain graafista kirjastoa. Kaikki kunnia sille, joka sen tekee, mutta silloinkin kannattaisi vähintään luoda oma näppärä setti funktioita, joita sitten voi käyttää jatkossakin. Ja silloinhan eräänlainen rajapinta on tehty.

Itselläni oli joskus vanha CP/M-järjestelmällä toimiva tietokone, jossa oli 80*25 merkin tekstinäyttö. Osa 8 bittisestä merkistöstä oli grafiikkamerkkejä, ei noita DOS:sta tuttuja viivoja, vaan kuuden "pikselin" merkkejä, joita oli siis 64. Niitten pohjalta loin hienon grafiikkakirjaston assemblerille ja pascalille, jolla pystyin piirtämään 160*75*1 grafiikkaikkunaan kaikkea kivaa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta