Grafiikkamoottorin toteutus työpöytä- ja selainympäristöille
Ahonen, Kalle (2025)
Ahonen, Kalle
2025
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2025053018684
https://urn.fi/URN:NBN:fi:amk-2025053018684
Tiivistelmä
Insinöörityön tarkoituksena oli tutkia useaa alustaa tukevan grafiikkamoottorin toteuttamisen haasteita ja ratkaisuja toisistaan hyvin poikkeaville kohdealustoille, eri grafiikkaohjelmointirajapintoja käyttäen. Tätä varten toteutettiin yksinkertainen grafiikkamoottoriohjelmisto ja sitä käyttävä testisovellus työpöytä- ja selainympäristölle.
Raportissa käydään aluksi läpi hieman grafiikkaohjelmoinnin ja siinä käytettävien rajapintojen historiaa, jonka jälkeen avataan grafiikkaohjelmoinnin alusta- ja rajapintariippumattomia keskeisiä käsitteitä. Tämän jälkeen siirrytään grafiikkamoottorin toteutukseen.
Grafiikkamoottori kirjoitettiin C++ -ohjelmointikielellä, jonka työpöytäympäristön grafiikkaohjelmointirajapintana toimii Vulkan. Selainympäristön toteutukseen käytettiin Emscripten ohjelmistokehityspakettia, joka mahdollistaa C++ -koodin kääntämisen WebAssemblyksi, jota voidaan ajaa selaimessa. Selain toteutuksen grafiikkaohjelmointirajapintana toimii OpenGL ES, jonka Emscripten muuntaa WebGL:ksi. Työ toteutettiin luomalla abstraktiokerros matalamman tason grafiikkaohjelmointikomponenttien ja korkeamman tason renderöintilogiikan välille.
Lopuksi toteutettiin yksinkertainen testisovellus työpöytä- ja selainympäristöille. Työssä onnistuttiin toteuttamaan suunnitelman mukainen ohjelmisto hyvin kattavan abstraktiokerroksen avulla. Työn lopputuloksessa tulee hyvin selkeästi ilmi Vulkanin mahdollistama tehokkaampi GPU:n hyödyntäminen OpenGL ES:ään ja erityisesti WebGL:ään verrattuna.
Raportissa käydään aluksi läpi hieman grafiikkaohjelmoinnin ja siinä käytettävien rajapintojen historiaa, jonka jälkeen avataan grafiikkaohjelmoinnin alusta- ja rajapintariippumattomia keskeisiä käsitteitä. Tämän jälkeen siirrytään grafiikkamoottorin toteutukseen.
Grafiikkamoottori kirjoitettiin C++ -ohjelmointikielellä, jonka työpöytäympäristön grafiikkaohjelmointirajapintana toimii Vulkan. Selainympäristön toteutukseen käytettiin Emscripten ohjelmistokehityspakettia, joka mahdollistaa C++ -koodin kääntämisen WebAssemblyksi, jota voidaan ajaa selaimessa. Selain toteutuksen grafiikkaohjelmointirajapintana toimii OpenGL ES, jonka Emscripten muuntaa WebGL:ksi. Työ toteutettiin luomalla abstraktiokerros matalamman tason grafiikkaohjelmointikomponenttien ja korkeamman tason renderöintilogiikan välille.
Lopuksi toteutettiin yksinkertainen testisovellus työpöytä- ja selainympäristöille. Työssä onnistuttiin toteuttamaan suunnitelman mukainen ohjelmisto hyvin kattavan abstraktiokerroksen avulla. Työn lopputuloksessa tulee hyvin selkeästi ilmi Vulkanin mahdollistama tehokkaampi GPU:n hyödyntäminen OpenGL ES:ään ja erityisesti WebGL:ään verrattuna.