PutPixel apuja

Mikä käsky Windowsissa vastaa BGI:n PutPixel käskyä? Kävin noin vuosi sitten tietokonegrafiikan "alkeiskurssin" ja siellä käytettiin vielä vanhaa DOS-pohjaista Borlandin C kääntäjää ja PutPixel tuli tutuksi. Nyt yritän tehdä jotain näyttävää Visual Studion opiskelijaversiolla mutta en vain keksi miten niinkin yksinkertaisen asian kuin pikselin tulostus näytölle tuntuu monimutkaiselle??
541711
Äänestä

Muut lukivat myös

Vastaukset 54

Vanhimmat

C olen käyttänyt grafiikan piirtoon SDL-kirjastoa.

SetPixel()

Sets a single pixel to desired value

SDLSurface.SetPixel( x, y, value )
x X coordinates of the pixel to be set
y Y coordinates of the pixel to be set
value The value to be set
Raises:
ParamError if x or y are out of ranges

This functions sets the color of a pixel to the desired value. The value is the palette index if this map has a palette, otherwise is a truecolor value whose precision depends on the mode depth.

To get a suitable value for this surface, use SDLSurface.GetPixel.

Äänestä
  • Poista se sekoileva windows! jossa ei mikään toimi!

    Äänestä

Katso Visual Studion dokumentaatiosta.

Äänestä
  • Visual Studio on IDE...

    Äänestä

  • Anonyymi kirjoitti:

    Visual Studio on IDE...

    TOIN SAIRANRASKA OHJELMA!

    Äänestä

  • Anonyymi kirjoitti:

    TOIN SAIRANRASKA OHJELMA!

    Tahmaa takulla !

    Äänestä

  • Anonyymi kirjoitti:

    Visual Studio on IDE...

    No mutta ihanko totta? Dokumentaatio sillä on silti, ja sieltä selviää yhtä sun toista, mukaanlukien vastaus aloittajan kysymykseen.

    Äänestä

  • Anonyymi kirjoitti:

    TOIN SAIRANRASKA OHJELMA!

    Et ilmeisesti tiedä mitä eroa on IDE:llä ja koodieditorilla? Tietenkin IDE on paljon raskaampi käyttää, mutta vastaavasti sillä voi tehdä paljon sellaista mitä et voi tehdä pelkällä koodieditorilla.

    Jos koneesi ei jaksa pyörittää Visual Studiota, älä käytä Visual Studiota. Ei vika ole VS:ssä, vaan sinun heikkotehoisessa koneessasi.

    Äänestä

  • Pyysin lähihoitajaa laitaan mulle peräpuikon, mutta se soitti poliisin!

    Äänestä

  • Anonyymi kirjoitti:

    No mutta ihanko totta? Dokumentaatio sillä on silti, ja sieltä selviää yhtä sun toista, mukaanlukien vastaus aloittajan kysymykseen.

    Outlookin suodatus petti – käyttäjien sähköpostit täyttyivät roskapostista

    Äänestä

Toisin kuin DOS:ssa, Windowsissa ohjelma ei voi piirtää mitä haluaa minne haluaa - eihän siitä tulisi mitään jos joku toinen ohjelma vaikka muuttaisi nettiselaimen näyttämää kuvaa.

Pitää käyttää ikkunoita yms. ja juttu on hankalampaa (mutta turvallisempaa) kuin DOS:ssa.

Äänestä
  • Näinpä. Ja jos haluaa koko ruudun piirtoalustakseen, niin sitten vain avaa sen ikkunan koko ruudun tilaan.

    Äänestä

  • Jos oikein muistan, ainakin vanhemmissa Windowseissa pystyi piirtelemään viivoja kaikkien ikkunoiden päälle, piti vaan jotenkin ottaa se hdc, beginPaint , endPaint yms.. mutta tästä on aikaa jo 1996, etten kyllä ihan muista.

    Äänestä

Tattis vastaajille!

Äänestä

Nuo piirtorutiinit tulee usein eri SDK-ympäristöistä. Eräs tällainen on qt5, jolla piirto tehdään canvas-olioon, ellen väärin muista. Ensin siis avataan ikkuna, johon voi piirtää. Qt5:n etu on se, että sitä käyttämällä ohjelma on helppo portata eri käyttöjärjestelmien välillä. Muitakin kirjastoja on olemassa käyttöjärjestelmän taholta tarjolla, mutta yleensä niiden käyttö on jonkin verran hankalampaa, kuin käyttää SDK:n läpi valmista wrapperia piirtoa varten - koodia ainakin tarvitaan paljon vähemmän ja esimerkkiohjelmia on tarjolla joissa esitellään API-funktioita.

Äänestä
  • "Qt5:n etu on se, että sitä käyttämällä ohjelma on helppo portata eri käyttöjärjestelmien välillä. "

    Hölmöltä kuullostaa. Viimeiset 12 vuotta on voinut piirtää pikseleitä selaimessa pikseleitä canvasille kääntämättä ja toimii joka paikassa. Tekee vain parin rivin SetPixel funktion että piirtää 1x1 pikselin kokoisia neliöitä.

    Tämä on hassua kun tällä palstalla ehdotellaan aina jotain 70-luvun välineitä yksinkertaisten asioiden tekemiseen silloin kun on parempaakin olemassa.

    Äänestä

  • Toisko joku siinollia mulle, t, Vapunen.

    Äänestä

  • Anonyymi00017 kirjoitti:

    "Qt5:n etu on se, että sitä käyttämällä ohjelma on helppo portata eri käyttöjärjestelmien välillä. "

    Hölmöltä kuullostaa. Viimeiset 12 vuotta on voinut piirtää pikseleitä selaimessa pikseleitä canvasille kääntämättä ja toimii joka paikassa. Tekee vain parin rivin SetPixel funktion että piirtää 1x1 pikselin kokoisia neliöitä.

    Tämä on hassua kun tällä palstalla ehdotellaan aina jotain 70-luvun välineitä yksinkertaisten asioiden tekemiseen silloin kun on parempaakin olemassa.

    Jos lähdetään siitä, että pikseleitä pitäisi saada ruudulle miljardi sekunnissa? Ei tuollaiset selain-höpsädykset oikein tahdo toimia. Kummallista, että nykyään halutaan tehdä tekniikalla, jossa tehot saadaan pidettyä n. 80-luvun alun kotikoneiden tasolla vaikka selain käyttää nyky-prosessorin kaiken irtoavan tehon..

    Äänestä

Joissain kielissä tuokin on tehty vaikeaksi.

Delphillä helppoa:

esim.

Paintbox1.Canvas.Pixels[X,Y] := clRed;

tuo muuttaa yhden pikselin (koordinaatit X,Y) punaiseksi.

Jos kohde ei ole paintbox vaan Bitmap1:TBitmap, niin:

Bitmap1.Canvas.Pixels[X,Y] := clLime;

tuo taas muuttaa Bitmapissa yhden pikselin kirkkaanvihreäksi.

Äänestä
  • Vaapusella taas rahat ihan loppu!

    Äänestä

  • Delphistä puuheenollen, fpc-src:ssä on esimerkkikoodia sdl:n käytöstä. Testasin mielenkiinnosta tuota pixelin piirtoa ja sen sai toimimaan double bufferingin kanssa melko pienellä vaivalla, jolloin näytölle sai 10Hz virkistystaajuuden 640x480 tarkkuudella ikkunassa. Tuosta jos haluaa lähteä optimoimaan saa luultavasti ihan pelattavan. Koska kuva tuotetaan tavallisessa muistipuskurissa on pikselin piirto aika nopea toimenpide.
    Valitettavasti en löytänyt sdl2-esimerkkejä tuolta, se olisi luultavasti järkevämpi valinta kuitenkin. No, sdl on saatu toimimaan hyvin ja korvaa bgi-kirjaston. Näyttäisi löytyvän opengl-esimerkkejä myös jos kiinnostusta riittää:
    /usr/share/fpcsrc/3.0.4/packages
    Ja kuvien generointiin tietysti fcl-image:
    https://wiki.freepascal.org/fcl-image

    Äänestä

  • Anonyymi00040 kirjoitti:

    Delphistä puuheenollen, fpc-src:ssä on esimerkkikoodia sdl:n käytöstä. Testasin mielenkiinnosta tuota pixelin piirtoa ja sen sai toimimaan double bufferingin kanssa melko pienellä vaivalla, jolloin näytölle sai 10Hz virkistystaajuuden 640x480 tarkkuudella ikkunassa. Tuosta jos haluaa lähteä optimoimaan saa luultavasti ihan pelattavan. Koska kuva tuotetaan tavallisessa muistipuskurissa on pikselin piirto aika nopea toimenpide.
    Valitettavasti en löytänyt sdl2-esimerkkejä tuolta, se olisi luultavasti järkevämpi valinta kuitenkin. No, sdl on saatu toimimaan hyvin ja korvaa bgi-kirjaston. Näyttäisi löytyvän opengl-esimerkkejä myös jos kiinnostusta riittää:
    /usr/share/fpcsrc/3.0.4/packages
    Ja kuvien generointiin tietysti fcl-image:
    https://wiki.freepascal.org/fcl-image

    Mutta miksi noin hankalasti?

    Äänestä

  • Anonyymi00042 kirjoitti:

    Mutta miksi noin hankalasti?

    En keksi, mikä tuossa olisi niin hankalaa ollut:
    type
    Pixel = Record
    x,y: integer;
    color: Uint32;
    end;

    var scr: PSDL_Surface;
    pix: Pixel;
    ...init
    scr := SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
    ...pikselin määrittely
    pix.x := 320;
    pix.y := 240;
    pix.color := SDL_MapRGB(scr^.format $ff,$0,$0); {red}
    ...lasketaan sijainti bufferissa
    p := Pointer( PUint8( scr^.pixels ) (plus) Uint32(pix.y) * scr_surf^.pitch
    (plus) Uint32(pix.x) * bpp);
    ...ja piirretään
    PUint32(p)^ := pix1.color;

    ...tarpeeksi monta pistettä, saadaan ne ruudulle päivittämällä koko ruutu:
    SDL_UpdateRect(scr,0,0,0,0);

    Äänestä

  • Anonyymi00043 kirjoitti:

    En keksi, mikä tuossa olisi niin hankalaa ollut:
    type
    Pixel = Record
    x,y: integer;
    color: Uint32;
    end;

    var scr: PSDL_Surface;
    pix: Pixel;
    ...init
    scr := SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
    ...pikselin määrittely
    pix.x := 320;
    pix.y := 240;
    pix.color := SDL_MapRGB(scr^.format $ff,$0,$0); {red}
    ...lasketaan sijainti bufferissa
    p := Pointer( PUint8( scr^.pixels ) (plus) Uint32(pix.y) * scr_surf^.pitch
    (plus) Uint32(pix.x) * bpp);
    ...ja piirretään
    PUint32(p)^ := pix1.color;

    ...tarpeeksi monta pistettä, saadaan ne ruudulle päivittämällä koko ruutu:
    SDL_UpdateRect(scr,0,0,0,0);

    "En keksi, mikä tuossa olisi niin hankalaa ollut:"

    https://www.w3schools.com/graphics/canvas_drawing.asp

    Tekee vain funtion mikä piirtää 1x1

    esim jotain tällaista:

    function setPixel(x, y, canvas) { canvas.strokeRect(x,y,1,1);}

    Ja se kun höpötät jostain OpenGL:n lisäämisestä tuohon... miksi?

    Äänestä

  • Liekkö enää Delphissä elossa ne DelphiX -komponentit tai jatkokehitelty? Niillä oli tosi kätevä tehdä pelejä, ainakin 2D-pelejä, nuo käytti DirectX-rajapintaa pohjana.

    Äänestä

  • Anonyymi00047 kirjoitti:

    Liekkö enää Delphissä elossa ne DelphiX -komponentit tai jatkokehitelty? Niillä oli tosi kätevä tehdä pelejä, ainakin 2D-pelejä, nuo käytti DirectX-rajapintaa pohjana.

    En usko tuota kätevyyttä.

    SDL:ssä ollut paljonkin järkeä ihan siitä saakka kun se tuli. Se ollut oikeasti hyvä, on vieläkin hengissä ja ikivanhat vanhat softat kääntyy sille edelleen.

    Mutta kyllä siitäkin aika meni ajat sitten ohi kun sai selaimella tehtyä tai pelimoottorilla.

    Äänestä

Tästä on aiempi topik
https://keskustelu.suomi24.fi/t/16853840/empisteiden-piirtaminen-ruudulleem

P/Invoke on ohjelmistokomponentti windows alustalla .NET kielille jolla päästään yleensä C++-kielessä käytettyihin windowsin yleisiin ohjelmointi käskyihin.
https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke

Näitä käskyjä importaavia finger printejä löytyy täältä
https://www.pinvoke.net/default.aspx/gdi32.SetPixel
Specialisti osaa tehdä fingerprintit c-kielen .h-tiedostosta.

Äänestä

  • Anonyymi00015 kirjoitti:

    Esimerkiksi SetPixel käskyn esittely löytyy tiedostosta wingdi.h sivulta https://learn.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-setpixel

    Olennainen kysymys olisi että miksi pitäisi käyttää jotain legacyrajapintoja tähän harjoitteluun?

    Kyllä se SDL on tässä vaivattomampi. Vielä kätevämpi olisi toteuttaa itse se SetPixel funktio että piirtelee selaimessa canvasille (käytännössä 1x1 kokoisen neliön piirto oman funktion sisällä) niin ei tarvitsisi asennella tai kääntää mitään. Pelkkä editori vaan.

    Äänestä

  • Anonyymi00016 kirjoitti:

    Olennainen kysymys olisi että miksi pitäisi käyttää jotain legacyrajapintoja tähän harjoitteluun?

    Kyllä se SDL on tässä vaivattomampi. Vielä kätevämpi olisi toteuttaa itse se SetPixel funktio että piirtelee selaimessa canvasille (käytännössä 1x1 kokoisen neliön piirto oman funktion sisällä) niin ei tarvitsisi asennella tai kääntää mitään. Pelkkä editori vaan.

    En usko että suomesta löytyy kovin montaa pc-grafiikkaohjelmointiin perehtynyttä ammattilaista, sellaisia taitaa löytyä peliohjelmoinnin ja laitteistovalmistajien parista.
    PC-tietokoneen näytönohjaus ja sen mikropiiri ja ohjelmisto ovat pääasiassa käyttöjärjestelmäriippumattomia ja omia ohjelmistojaan ja ohjelmointirajapintojaan.

    Esimerkiksi tämä windows käyttöjärjestelmä funktio SetPixel on monikerros-arkkitehtuuria joka päätyy erilaisten ohjelmistokomponenttien ja ajuriarkkitehtuurien kautta laitteistotasolle, eikä sillä tosiaan näytön grafiikkaa ohjelmoida perustasolla jossa 4K näyttö virkistyy 100 hz taajuudella.

    Äänestä

  • Anonyymi00018 kirjoitti:

    En usko että suomesta löytyy kovin montaa pc-grafiikkaohjelmointiin perehtynyttä ammattilaista, sellaisia taitaa löytyä peliohjelmoinnin ja laitteistovalmistajien parista.
    PC-tietokoneen näytönohjaus ja sen mikropiiri ja ohjelmisto ovat pääasiassa käyttöjärjestelmäriippumattomia ja omia ohjelmistojaan ja ohjelmointirajapintojaan.

    Esimerkiksi tämä windows käyttöjärjestelmä funktio SetPixel on monikerros-arkkitehtuuria joka päätyy erilaisten ohjelmistokomponenttien ja ajuriarkkitehtuurien kautta laitteistotasolle, eikä sillä tosiaan näytön grafiikkaa ohjelmoida perustasolla jossa 4K näyttö virkistyy 100 hz taajuudella.

    "En usko että suomesta löytyy kovin montaa pc-grafiikkaohjelmointiin perehtynyttä ammattilaista, sellaisia taitaa löytyä peliohjelmoinnin ja laitteistovalmistajien parista."

    Olen perehtynyt tähän syvällisesti joskaan en työn parissa sitä tee ja tunnen ihmisiä ketkä sitten työkseen tekevät. Kyseistä aihetta muuten opetetaan kouluissakin.

    "PC-tietokoneen näytönohjaus ja sen mikropiiri ja ohjelmisto ovat pääasiassa käyttöjärjestelmäriippumattomia ja omia ohjelmistojaan ja ohjelmointirajapintojaan."

    Ei mitään peligrafiikkaa tehdä ohjelmoimalla suoraan rautaa. Tuosta on yli 25v aikaa kun tuollaista tehtiin peleissä. Silloin 90-luvun puolivälin jälkeen alettiin käyttämään DirectX:ää ja pian sen jälkeen tuli SDL jos halusi piirtää pikseleitä laitteistoriippumattomasti. Peliohjelmoinnissa nämä eivät kiinnosta kun peliohjelmointi tehdään korkeammalla tasolla käyttäen pelimoottoria. Pelejä tehtiin pelimoottoreita käyttäen jo 80-luvulla.

    "Esimerkiksi tämä windows käyttöjärjestelmä funktio SetPixel on monikerros-arkkitehtuuria joka päätyy erilaisten ohjelmistokomponenttien ja ajuriarkkitehtuurien kautta laitteistotasolle, eikä sillä tosiaan näytön grafiikkaa ohjelmoida perustasolla jossa 4K näyttö virkistyy 100 hz taajuudella."

    Kyllä se 4K näyttö virkistyy 100Hz taajuudella vaikka sen pikselin piirtää siihen selaimen canvasille. Voi muuten ohjelmoida vaikka pelejä jos siltä tuntuu.

    Äänestä

  • Anonyymi00019 kirjoitti:

    "En usko että suomesta löytyy kovin montaa pc-grafiikkaohjelmointiin perehtynyttä ammattilaista, sellaisia taitaa löytyä peliohjelmoinnin ja laitteistovalmistajien parista."

    Olen perehtynyt tähän syvällisesti joskaan en työn parissa sitä tee ja tunnen ihmisiä ketkä sitten työkseen tekevät. Kyseistä aihetta muuten opetetaan kouluissakin.

    "PC-tietokoneen näytönohjaus ja sen mikropiiri ja ohjelmisto ovat pääasiassa käyttöjärjestelmäriippumattomia ja omia ohjelmistojaan ja ohjelmointirajapintojaan."

    Ei mitään peligrafiikkaa tehdä ohjelmoimalla suoraan rautaa. Tuosta on yli 25v aikaa kun tuollaista tehtiin peleissä. Silloin 90-luvun puolivälin jälkeen alettiin käyttämään DirectX:ää ja pian sen jälkeen tuli SDL jos halusi piirtää pikseleitä laitteistoriippumattomasti. Peliohjelmoinnissa nämä eivät kiinnosta kun peliohjelmointi tehdään korkeammalla tasolla käyttäen pelimoottoria. Pelejä tehtiin pelimoottoreita käyttäen jo 80-luvulla.

    "Esimerkiksi tämä windows käyttöjärjestelmä funktio SetPixel on monikerros-arkkitehtuuria joka päätyy erilaisten ohjelmistokomponenttien ja ajuriarkkitehtuurien kautta laitteistotasolle, eikä sillä tosiaan näytön grafiikkaa ohjelmoida perustasolla jossa 4K näyttö virkistyy 100 hz taajuudella."

    Kyllä se 4K näyttö virkistyy 100Hz taajuudella vaikka sen pikselin piirtää siihen selaimen canvasille. Voi muuten ohjelmoida vaikka pelejä jos siltä tuntuu.

    Alaan perehtynyt varmasti osaa paremmin esittää kuinka grafiikkakorttia ohjelmoidaan. Grafiikkakorteissa näyttää olevan tällä hetkellä omaa muistia 30 GB:en asti, joka on kolme neljä kertaa enemmän kuin keskiverto PC:n RAM.

    https://developer.nvidia.com/nsight-visual-studio-edition
    "NVIDIA Nsight™ VSE allows you to build and debug integrated GPU kernels and native CPU code as well as inspect the state of the GPU and memory."
    Alan osaamista harventaa se että C++ ohjelmointia ei opeteta yleisesti alaan liittyvässä koulutuksessa, yleisesti käytössä olevat laitteistot eivät tue grafiikka-ohjelmointia.

    Ala onkin jonkinlainen atk-alan elitistinen osa.
    Joka on hiukan nurinkurista, että tämä laitteistovalmistajien masinoima "peliala" on täyttänyt jo huonekaluliikkeet ja atk-markkinat ylihinnoiteltujen pelituotteidensa kanssa, ja koko atk-alasta on tullut jotain lasten pelailua, kun atk:lla olisi paljon enemmän annettavaa yhteiskunnille.

    Äänestä

  • Anonyymi00019 kirjoitti:

    "En usko että suomesta löytyy kovin montaa pc-grafiikkaohjelmointiin perehtynyttä ammattilaista, sellaisia taitaa löytyä peliohjelmoinnin ja laitteistovalmistajien parista."

    Olen perehtynyt tähän syvällisesti joskaan en työn parissa sitä tee ja tunnen ihmisiä ketkä sitten työkseen tekevät. Kyseistä aihetta muuten opetetaan kouluissakin.

    "PC-tietokoneen näytönohjaus ja sen mikropiiri ja ohjelmisto ovat pääasiassa käyttöjärjestelmäriippumattomia ja omia ohjelmistojaan ja ohjelmointirajapintojaan."

    Ei mitään peligrafiikkaa tehdä ohjelmoimalla suoraan rautaa. Tuosta on yli 25v aikaa kun tuollaista tehtiin peleissä. Silloin 90-luvun puolivälin jälkeen alettiin käyttämään DirectX:ää ja pian sen jälkeen tuli SDL jos halusi piirtää pikseleitä laitteistoriippumattomasti. Peliohjelmoinnissa nämä eivät kiinnosta kun peliohjelmointi tehdään korkeammalla tasolla käyttäen pelimoottoria. Pelejä tehtiin pelimoottoreita käyttäen jo 80-luvulla.

    "Esimerkiksi tämä windows käyttöjärjestelmä funktio SetPixel on monikerros-arkkitehtuuria joka päätyy erilaisten ohjelmistokomponenttien ja ajuriarkkitehtuurien kautta laitteistotasolle, eikä sillä tosiaan näytön grafiikkaa ohjelmoida perustasolla jossa 4K näyttö virkistyy 100 hz taajuudella."

    Kyllä se 4K näyttö virkistyy 100Hz taajuudella vaikka sen pikselin piirtää siihen selaimen canvasille. Voi muuten ohjelmoida vaikka pelejä jos siltä tuntuu.

    "Ei mitään peligrafiikkaa tehdä ohjelmoimalla suoraan rautaa."

    Tuskimpa se "rauta" ilman ohjelmointia toimii, eli kyllä sitä ihan "suoraan" ohjelmoidaan. Samalla tapaa kuin CPU toimii omalla "rautaisella" käskykannallaan.

    Äänestä

  • Anonyymi00019 kirjoitti:

    "En usko että suomesta löytyy kovin montaa pc-grafiikkaohjelmointiin perehtynyttä ammattilaista, sellaisia taitaa löytyä peliohjelmoinnin ja laitteistovalmistajien parista."

    Olen perehtynyt tähän syvällisesti joskaan en työn parissa sitä tee ja tunnen ihmisiä ketkä sitten työkseen tekevät. Kyseistä aihetta muuten opetetaan kouluissakin.

    "PC-tietokoneen näytönohjaus ja sen mikropiiri ja ohjelmisto ovat pääasiassa käyttöjärjestelmäriippumattomia ja omia ohjelmistojaan ja ohjelmointirajapintojaan."

    Ei mitään peligrafiikkaa tehdä ohjelmoimalla suoraan rautaa. Tuosta on yli 25v aikaa kun tuollaista tehtiin peleissä. Silloin 90-luvun puolivälin jälkeen alettiin käyttämään DirectX:ää ja pian sen jälkeen tuli SDL jos halusi piirtää pikseleitä laitteistoriippumattomasti. Peliohjelmoinnissa nämä eivät kiinnosta kun peliohjelmointi tehdään korkeammalla tasolla käyttäen pelimoottoria. Pelejä tehtiin pelimoottoreita käyttäen jo 80-luvulla.

    "Esimerkiksi tämä windows käyttöjärjestelmä funktio SetPixel on monikerros-arkkitehtuuria joka päätyy erilaisten ohjelmistokomponenttien ja ajuriarkkitehtuurien kautta laitteistotasolle, eikä sillä tosiaan näytön grafiikkaa ohjelmoida perustasolla jossa 4K näyttö virkistyy 100 hz taajuudella."

    Kyllä se 4K näyttö virkistyy 100Hz taajuudella vaikka sen pikselin piirtää siihen selaimen canvasille. Voi muuten ohjelmoida vaikka pelejä jos siltä tuntuu.

    Yksi pikseli 0.05 ms välein tarkoittaa että yhden 4K 3840 x 2160 px kuvan piirtämiseen kuluu 7 minuuttia. 100 hz taajuuteen nähden se on yli 40.000 kertaa liian hidasta.
    Varmasti voi ohjelmoida esimerkiksi pieniä matopelejä.

    Äänestä

  • Anonyymi00020 kirjoitti:

    Alaan perehtynyt varmasti osaa paremmin esittää kuinka grafiikkakorttia ohjelmoidaan. Grafiikkakorteissa näyttää olevan tällä hetkellä omaa muistia 30 GB:en asti, joka on kolme neljä kertaa enemmän kuin keskiverto PC:n RAM.

    https://developer.nvidia.com/nsight-visual-studio-edition
    "NVIDIA Nsight™ VSE allows you to build and debug integrated GPU kernels and native CPU code as well as inspect the state of the GPU and memory."
    Alan osaamista harventaa se että C++ ohjelmointia ei opeteta yleisesti alaan liittyvässä koulutuksessa, yleisesti käytössä olevat laitteistot eivät tue grafiikka-ohjelmointia.

    Ala onkin jonkinlainen atk-alan elitistinen osa.
    Joka on hiukan nurinkurista, että tämä laitteistovalmistajien masinoima "peliala" on täyttänyt jo huonekaluliikkeet ja atk-markkinat ylihinnoiteltujen pelituotteidensa kanssa, ja koko atk-alasta on tullut jotain lasten pelailua, kun atk:lla olisi paljon enemmän annettavaa yhteiskunnille.

    Koko lystin maksaa keskivertokäyttäjä, jonka täytyy uusi laitteensa "suunnitellun vanhenemisen" seurauksena vähintään kerran viidessä vuodessa.
    Se on aika iso kasa rahaa, jos miljardi laitetta x 500 euroa uusitaan vuosittain. Toki on paljon härskimpääkin toimintaa kuten 10 miljardia muutamaan pienlentokoneeseen.

    Äänestä

  • Anonyymi00020 kirjoitti:

    Alaan perehtynyt varmasti osaa paremmin esittää kuinka grafiikkakorttia ohjelmoidaan. Grafiikkakorteissa näyttää olevan tällä hetkellä omaa muistia 30 GB:en asti, joka on kolme neljä kertaa enemmän kuin keskiverto PC:n RAM.

    https://developer.nvidia.com/nsight-visual-studio-edition
    "NVIDIA Nsight™ VSE allows you to build and debug integrated GPU kernels and native CPU code as well as inspect the state of the GPU and memory."
    Alan osaamista harventaa se että C++ ohjelmointia ei opeteta yleisesti alaan liittyvässä koulutuksessa, yleisesti käytössä olevat laitteistot eivät tue grafiikka-ohjelmointia.

    Ala onkin jonkinlainen atk-alan elitistinen osa.
    Joka on hiukan nurinkurista, että tämä laitteistovalmistajien masinoima "peliala" on täyttänyt jo huonekaluliikkeet ja atk-markkinat ylihinnoiteltujen pelituotteidensa kanssa, ja koko atk-alasta on tullut jotain lasten pelailua, kun atk:lla olisi paljon enemmän annettavaa yhteiskunnille.

    "Alaan perehtynyt varmasti osaa paremmin esittää kuinka grafiikkakorttia ohjelmoidaan."

    Kun kyse on peleistä niin toimii niin, että käytetään pelimoottoria mikä hoitaa sen matalamman tason. Sinne vaan tehdään pari shaderia lisäksi että ei kaikkea vedetä oletuksilla.

    Sitten kun mennään matalammalle tasolle niin löytyy grafiikkakirjastoja jotka abstaktoi matalamman tason, eli voi käskeä grafiikkakorttia ja välissä oleva kerros kääntää alustakohtaisille grafiikkarajapinnoille.

    Jos haluaa mennä vielä matalammalle niin sitten löytyy grafiikkarajapintoja kuten OpenGL, OpenGL ES/WebGL, Vulcan, DirectX ja Metal.

    Ja tässä kohtaa sitten on vastassa suljetumpi tekniikka että jotkut firmat pitävät niitä liikesalaisuuksina ja ei grafiikkaa ohjelmoidessa matalemmalle mennä. Poislukien on sitten se mitä näytönohjainvalmistajat, konsolivalmistajat jne. tekevät itse ja jotkut avoimen lähdekoodin reverse-engineering ajurit.

    Grafiikkakortteja voi myös laittaa ajamaan koodia ja AI hommissa käytetään niinikään frameworkkeja. Matalammalle tasolle mentäessä voi käyttää näytönohjainvalmistajan dokumentaatiota ja SDK:ta. Löytyy sitten vaikka OpenCL, HIP ja CUDA.

    "Ala onkin jonkinlainen atk-alan elitistinen osa."

    Kuinka niin? Ihan perusohjelmointia tuo on.

    "ja koko atk-alasta on tullut jotain lasten pelailua, kun atk:lla olisi paljon enemmän annettavaa yhteiskunnille."

    Höpöhöpö. Tällä hetkellä satsataan todella paljon tekoälyjen ohjelmointiin ja ne tehdään juurikin frameworkeilla jotka käyttävät GPU:a.

    Äänestä

  • Anonyymi00021 kirjoitti:

    "Ei mitään peligrafiikkaa tehdä ohjelmoimalla suoraan rautaa."

    Tuskimpa se "rauta" ilman ohjelmointia toimii, eli kyllä sitä ihan "suoraan" ohjelmoidaan. Samalla tapaa kuin CPU toimii omalla "rautaisella" käskykannallaan.

    Et nyt tajua että siellä on välissä softaa.

    Ei ohjelmoija kirjoita koodia millään GPU:n käskykannalla tai ränkkää jotain rekistereitä. Siellä on softalla toteutettu rajapinta ja pelien tapauksessa siellä on paljonkin rajapintaa välissä ja homma tehdään paljon korkeammalla tasolla.

    Äänestä

  • Anonyymi00022 kirjoitti:

    Yksi pikseli 0.05 ms välein tarkoittaa että yhden 4K 3840 x 2160 px kuvan piirtämiseen kuluu 7 minuuttia. 100 hz taajuuteen nähden se on yli 40.000 kertaa liian hidasta.
    Varmasti voi ohjelmoida esimerkiksi pieniä matopelejä.

    Ei niitä pelejä tehdä piirtämällä asioita pikseli kerrallaan. Kyllä se kuva siellä näytönohjaimella päivittyy 100 kertaa sekunnissa mutta sotket nyt tähän sen latenssin mikä tulee kuin käsketään piirtämään pikseli.

    Peleissä yleisesti käsketään piirtämään vaikka monsteri ja alla oleva tekniikka hoitaa geometrian, valaisun, pinnoituksen jne. automaattisesti sen mukaan miten objekti on mallinnettu mallinnusohjelmassa.

    Pikseleitä ei piirretty pahemmin edes 80-luvulla. Käskettiin piirtämään vaikka sprite.

    Huomioi että aloittajalla oli kyseessä pikselin piirto eikä peliohjelmointi.

    Äänestä

  • Anonyymi00023 kirjoitti:

    Koko lystin maksaa keskivertokäyttäjä, jonka täytyy uusi laitteensa "suunnitellun vanhenemisen" seurauksena vähintään kerran viidessä vuodessa.
    Se on aika iso kasa rahaa, jos miljardi laitetta x 500 euroa uusitaan vuosittain. Toki on paljon härskimpääkin toimintaa kuten 10 miljardia muutamaan pienlentokoneeseen.

    Kuka maksaa kuka ei.

    Vastustan suunniteltua vanhenemista ja maksan siitä vähän enemmän että saan laitteiston ja ohjelmiston mikä ei vanhene ennenaikaisesti.

    Vanhin nVidian näytönohjain esimerkiksi on itseasiassa vuodelta 2010 joka tukee riittävän nykyaikaista grafiikkakiihdytystä että on yhteensopiva. Tuollainen oli yhteensopiva Windows 7:n kanssa joka on edelleen tekohengitettävissä.

    Vuoden 2010 näytönohjain oli vaan aika hidas, mutta vuoden 2011 peliohjain, joku Geforce GTX 460 vastasi tehoiltaan nykyisiä tehokkaita mobiili GPU:ja että ei periaatteessa haittaa suurimmassa osassa grafiikkaohjelmointia yhtään.

    Äänestä

  • Anonyymi00025 kirjoitti:

    Et nyt tajua että siellä on välissä softaa.

    Ei ohjelmoija kirjoita koodia millään GPU:n käskykannalla tai ränkkää jotain rekistereitä. Siellä on softalla toteutettu rajapinta ja pelien tapauksessa siellä on paljonkin rajapintaa välissä ja homma tehdään paljon korkeammalla tasolla.

    Kyllä jopa C#-kieleen voidaan sisällyttää assembly-koodia, joka on jo käytännössä "rautakoodia" rekistereineen, mikä sinänsä on yleensä tarpeetonta kääntäjän tehdessä saman yksinkertaisemmilla ohjelmointikäskyillä, mutta saattaa olla joskus optimoinnin tai vähemmän käytettyjen funktioiden kannalta optimaalisempaa.

    Äänestä

  • Anonyymi00039 kirjoitti:

    Kyllä jopa C#-kieleen voidaan sisällyttää assembly-koodia, joka on jo käytännössä "rautakoodia" rekistereineen, mikä sinänsä on yleensä tarpeetonta kääntäjän tehdessä saman yksinkertaisemmilla ohjelmointikäskyillä, mutta saattaa olla joskus optimoinnin tai vähemmän käytettyjen funktioiden kannalta optimaalisempaa.

    Siitä on todennäköisesti enemmän haittaa kuin hyötyä.

    Äänestä

  • Anonyymi00020 kirjoitti:

    Alaan perehtynyt varmasti osaa paremmin esittää kuinka grafiikkakorttia ohjelmoidaan. Grafiikkakorteissa näyttää olevan tällä hetkellä omaa muistia 30 GB:en asti, joka on kolme neljä kertaa enemmän kuin keskiverto PC:n RAM.

    https://developer.nvidia.com/nsight-visual-studio-edition
    "NVIDIA Nsight™ VSE allows you to build and debug integrated GPU kernels and native CPU code as well as inspect the state of the GPU and memory."
    Alan osaamista harventaa se että C++ ohjelmointia ei opeteta yleisesti alaan liittyvässä koulutuksessa, yleisesti käytössä olevat laitteistot eivät tue grafiikka-ohjelmointia.

    Ala onkin jonkinlainen atk-alan elitistinen osa.
    Joka on hiukan nurinkurista, että tämä laitteistovalmistajien masinoima "peliala" on täyttänyt jo huonekaluliikkeet ja atk-markkinat ylihinnoiteltujen pelituotteidensa kanssa, ja koko atk-alasta on tullut jotain lasten pelailua, kun atk:lla olisi paljon enemmän annettavaa yhteiskunnille.

    "Grafiikkakorteissa näyttää olevan tällä hetkellä omaa muistia 30 GB:en asti, joka on kolme neljä kertaa enemmän kuin keskiverto PC:n RAM."

    Tsihih.. Normi pelitietokoneessa on 32Gb RAM muistia, Raspberry Pi:ssä on 8Gb.

    Äänestä

Oletko jäänyt viimevuosituhannelle!

Äänestä
  • Wielä windows 7:ssä sai toimimaan Win95 pelit Virtual PC:en XP modessa. Nämä nykyiset ovat jotain aivotonta räiskimistä, vähän kun Suomen poliitikkojen ristiretki Ukrainassa.

    Äänestä

  • Anonyymi00050 kirjoitti:

    Wielä windows 7:ssä sai toimimaan Win95 pelit Virtual PC:en XP modessa. Nämä nykyiset ovat jotain aivotonta räiskimistä, vähän kun Suomen poliitikkojen ristiretki Ukrainassa.

    Toden totta, virtuaali pc:n saa Win10:Een jos on Pro versio ja tarpeeksi vanhentumattomat ja tehokkaat raudat koneessa.

    Äänestä

  • Anonyymi00051 kirjoitti:

    Toden totta, virtuaali pc:n saa Win10:Een jos on Pro versio ja tarpeeksi vanhentumattomat ja tehokkaat raudat koneessa.

    Windows 11?
    Windows 10 Home and Pro Jul 29, 2015- Oct 14, 2025.
    Eli over my Blue Screen of Death.

    Äänestä

  • Anonyymi00051 kirjoitti:

    Toden totta, virtuaali pc:n saa Win10:Een jos on Pro versio ja tarpeeksi vanhentumattomat ja tehokkaat raudat koneessa.

    https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/hyper-v-requirements
    Prosessorin Tech Specs. CPU support for VM Monitor Mode Extension (VT-x on Intel CPU's) ✔️
    C:\>systeminfo
    Hyper-V Requirements:
    VM Monitor Mode Extensions: Yes ✔️
    Virtualization Enabled In Firmware: Yes ✔️
    Second Level Address Translation: Yes ✔️
    Data Execution Prevention Available: Yes ✔️

    The Hyper-V role cannot be installed on:
    Windows 10 Home ❌

    Windows 10 pro + 250 € ✔️ (jos lisenssin jostain pystyy hankkimaan).

    Sitten vain tekemään levykuvia vanhoista käyttiksistä.

    Äänestä

  • Anonyymi00053 kirjoitti:

    https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/hyper-v-requirements
    Prosessorin Tech Specs. CPU support for VM Monitor Mode Extension (VT-x on Intel CPU's) ✔️
    C:\>systeminfo
    Hyper-V Requirements:
    VM Monitor Mode Extensions: Yes ✔️
    Virtualization Enabled In Firmware: Yes ✔️
    Second Level Address Translation: Yes ✔️
    Data Execution Prevention Available: Yes ✔️

    The Hyper-V role cannot be installed on:
    Windows 10 Home ❌

    Windows 10 pro + 250 € ✔️ (jos lisenssin jostain pystyy hankkimaan).

    Sitten vain tekemään levykuvia vanhoista käyttiksistä.

    Windows 10 Pro tulee tietokoneen mukana kunhan ostaa työkoneen eikä jostain Gigantista.

    Äänestä

  • Anonyymi00053 kirjoitti:

    https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/hyper-v-requirements
    Prosessorin Tech Specs. CPU support for VM Monitor Mode Extension (VT-x on Intel CPU's) ✔️
    C:\>systeminfo
    Hyper-V Requirements:
    VM Monitor Mode Extensions: Yes ✔️
    Virtualization Enabled In Firmware: Yes ✔️
    Second Level Address Translation: Yes ✔️
    Data Execution Prevention Available: Yes ✔️

    The Hyper-V role cannot be installed on:
    Windows 10 Home ❌

    Windows 10 pro + 250 € ✔️ (jos lisenssin jostain pystyy hankkimaan).

    Sitten vain tekemään levykuvia vanhoista käyttiksistä.

    Tarkistin hinnan, Käynnistä valikko > Asetukset > Päivitys ja Turvallisuus > Aktivointi > Mene kauppaan.
    149 €, mutta, upgreidaus pitäisi tehdä Microsoft-tilin kautta, enkä ole koskaan rekisteröinyt käyttöjärjestelmää nimiini, enkä niin tee nytkään.
    Mihin maailmassa, Microsoft tarvitsee ihmisten tietoja. Meillä on EU tietoturva-asetus, jossa on periaatteet siitä, mitä tietoja eri toimijat tarvitsevat. Olisi toimijoidenkin kannalta tarkoituksenmukaisempaa olla keräämättä tietoja mitä ei mihinkään tarvita.

    Äänestä

  • Anonyymi00055 kirjoitti:

    Tarkistin hinnan, Käynnistä valikko > Asetukset > Päivitys ja Turvallisuus > Aktivointi > Mene kauppaan.
    149 €, mutta, upgreidaus pitäisi tehdä Microsoft-tilin kautta, enkä ole koskaan rekisteröinyt käyttöjärjestelmää nimiini, enkä niin tee nytkään.
    Mihin maailmassa, Microsoft tarvitsee ihmisten tietoja. Meillä on EU tietoturva-asetus, jossa on periaatteet siitä, mitä tietoja eri toimijat tarvitsevat. Olisi toimijoidenkin kannalta tarkoituksenmukaisempaa olla keräämättä tietoja mitä ei mihinkään tarvita.

    Sinänsä huvittavaa, että tietojen luovutukseen kuljetaan "turvallisuus"-valikon kautta. MS ilmeisesti ajattelee olevansa turvallinen "Big Brother". Kuitenkin jo pelkkä tietojen päätyminen toisen osapuolen haltuun on periaatteellinen tietoturvaloukkaus.

    Äänestä

  • Anonyymi00055 kirjoitti:

    Tarkistin hinnan, Käynnistä valikko > Asetukset > Päivitys ja Turvallisuus > Aktivointi > Mene kauppaan.
    149 €, mutta, upgreidaus pitäisi tehdä Microsoft-tilin kautta, enkä ole koskaan rekisteröinyt käyttöjärjestelmää nimiini, enkä niin tee nytkään.
    Mihin maailmassa, Microsoft tarvitsee ihmisten tietoja. Meillä on EU tietoturva-asetus, jossa on periaatteet siitä, mitä tietoja eri toimijat tarvitsevat. Olisi toimijoidenkin kannalta tarkoituksenmukaisempaa olla keräämättä tietoja mitä ei mihinkään tarvita.

    Varmaan mainostamista varten. Ja toinen juttu tietenkin että laskuttamista varten.

    Mutta tosiaankin, ei mitään järkeä käyttää Windowsia jos tuo häiritsee.

    Äänestä

  • Anonyymi00057 kirjoitti:

    Varmaan mainostamista varten. Ja toinen juttu tietenkin että laskuttamista varten.

    Mutta tosiaankin, ei mitään järkeä käyttää Windowsia jos tuo häiritsee.

    Muutamia käyttäjän tietoihin liittyviä asetuksia, joilla käyttöjä voi luovuttaa tietoja tietokoneen käytöstään Microsoftille.
    Asetukset > Yksityisyys > Aktiivisuus historia > Lähetä aktiivisuus historia Microsoftille

    Edge selain
    edge://settings/profiles/rewards > Earn Microsoft Rewards in Microsoft Edge
    edge://settings/profiles/localBrowserDataShare > Share browsing data with other Windows features
    edge://settings/privacy >
    - Help improve Microsoft products by sending optional diagnostic data about how you use the browser, websites you visit, and crash reports
    - Help improve Microsoft products by sending the results from searches on the web
    - Allow Microsoft to use your browsing activity including history, favorites, usage and other browsing data to personalize Microsoft Edge and Microsoft services like ads, search, shopping and news
    edge://settings/content/paymentHandler > Allow sites to install payment handlers (recommended)
    edge://settings/system > Continue running background extensions and apps when Microsoft Edge is closed

    Äänestä

  • Anonyymi00058 kirjoitti:

    Muutamia käyttäjän tietoihin liittyviä asetuksia, joilla käyttöjä voi luovuttaa tietoja tietokoneen käytöstään Microsoftille.
    Asetukset > Yksityisyys > Aktiivisuus historia > Lähetä aktiivisuus historia Microsoftille

    Edge selain
    edge://settings/profiles/rewards > Earn Microsoft Rewards in Microsoft Edge
    edge://settings/profiles/localBrowserDataShare > Share browsing data with other Windows features
    edge://settings/privacy >
    - Help improve Microsoft products by sending optional diagnostic data about how you use the browser, websites you visit, and crash reports
    - Help improve Microsoft products by sending the results from searches on the web
    - Allow Microsoft to use your browsing activity including history, favorites, usage and other browsing data to personalize Microsoft Edge and Microsoft services like ads, search, shopping and news
    edge://settings/content/paymentHandler > Allow sites to install payment handlers (recommended)
    edge://settings/system > Continue running background extensions and apps when Microsoft Edge is closed

    Haluatko luovuttaa jollekin internetkäyttöhistoriasi. Ensin rekisteröimällä käyttöjärjestelmän nimiisi, sen jälkeen yrittämällä olla selvillä sadoista Windowsin ja sen ohjelmien asetuksista jotka myös lisääntyvät ja muuttuvat päivityksissä. Edgen päivityksiä ei voi ajoittaa kuten Windowsin päivityksiä, vaan edge päivittyy taustalla kun se päivittyy, huomaat sen yllättäin ilmoituksella "selain on päivitetty".

    Äänestä

  • Anonyymi00050 kirjoitti:

    Wielä windows 7:ssä sai toimimaan Win95 pelit Virtual PC:en XP modessa. Nämä nykyiset ovat jotain aivotonta räiskimistä, vähän kun Suomen poliitikkojen ristiretki Ukrainassa.

    Mistä tietää, että peli on huono? Se on toteutettu tunnetulla pelimoottorilla.. vitsi on siinä, että nuo on järjestäin optimoitu tiettyä pelityyppiä ajatellen ja jos pelimoottorilla on pelannut yhtä hyvää peliä - seuraavat on pakostakin huonoja, koska pelimoottori ei ole järin paljoa kehittynyt. Näkisin pelimoottorin käytön eräänlaisena välivaiheen koodina, jolla voi toteuttaa joitain osia pelistä ja demota kohtia, jotka vaatii pelimoottoriin uudempaa tekniikkaa toimiakseen.

    Äänestä

Ketjusta on poistettu 7 sääntöjenvastaista viestiä.

Kommentoi aloitusta


Anonyymi kirjoitti:

Mikä käsky Windowsissa vastaa BGI:n PutPixel käskyä? Kävin noin vuosi sitten tietokonegrafiikan "alkeiskurssin" ja siellä käytettiin vielä vanhaa DOS-pohjaista Borlandin C kääntäjää ja PutPixel tuli tutuksi. Nyt yritän tehdä jotain näyttävää Visual Studion opiskelijaversiolla mutta en vain keksi miten niinkin yksinkertaisen asian kuin pikselin tulostus näytölle tuntuu monimutkaiselle??

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