Platform-agnostic data visualization in Qt framework
Varanka, Sami (2023-06-15)
Varanka, Sami
S. Varanka
15.06.2023
© 2023 Sami Varanka. Ellei toisin mainita, uudelleenkäyttö on sallittu Creative Commons Attribution 4.0 International (CC-BY 4.0) -lisenssillä (https://creativecommons.org/licenses/by/4.0/). Uudelleenkäyttö on sallittua edellyttäen, että lähde mainitaan asianmukaisesti ja mahdolliset muutokset merkitään. Sellaisten osien käyttö tai jäljentäminen, jotka eivät ole tekijän tai tekijöiden omaisuutta, saattaa edellyttää lupaa suoraan asianomaisilta oikeudenhaltijoilta.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:oulu-202306152533
https://urn.fi/URN:NBN:fi:oulu-202306152533
Tiivistelmä
There are a variety of electronic devices making people’s lives easier. Many of these devices, such as smart TVs, coffee machines, and electric cars, have highresolution displays that visualize a rich interface for human-machine interaction. One common cross-platform framework for developing these visual interfaces is Qt.
With its vast majority of modules, Qt offers a rich framework for developing different interfaces. Over the years, various modules have been added and removed from Qt. One such module is a module for visualizing data in 3D. The module was added when Qt relied heavily on the OpenGL rendering backend. Nowadays, in addition to OpenGL, Qt supports rendering 3D graphics on other popular graphics backends. Nevertheless, the data visualization module requires using OpenGL as the rendering backend.
This thesis investigates the optimal way to change Qt’s module dedicated to 3D data visualization to work on different rendering backends. Additionally, a design for an extension to public C++ API for Qt’s 3D module, used in implementing the new module, is presented. The requirements for the new implementation of the data visualization module are derived from the current module.
The implementation of the new version is evaluated with a tailor-made test application. The results indicate that the new module can improve performance on devices supporting modern graphics backend features. On olemassa monia erilaisia ihmisten elämää helpottavia elektronisia laitteita. Monissa tällaisissa laitteissa, kuten älytelevisioissa, kahviautomaateissa ja sähköautoissa, on korkearesoluutioinen näyttö, joka visualisoi monipuolisen käyttöliittymän ihmisen ja koneen väliseen vuorovaikutukseen. Yksi yleinen alustariippumaton ohjelmistokehitysrunko näiden visuaalisten rajapintojen kehittämiseen on Qt.
Qt tarjoaa paljon erilaisia moduleita ja runsaan kehyksen erilaisten käyttöliittymien kehitykseen. Vuosien varrella Qt-ympäristöön on lisätty ja siitä on poistettu erilaisia moduleja. Yksi tällainen moduli on tarkoitettu datan visualisointiin 3D-muodossa. Kyseinen moduli lisättiin, kun Qt luotti vielä voimakkaasti OpenGL-renderöintitaustajärjestelmään. Nykyään Qt tukee 3D-grafikan esittämistä muillakin suosituilla grafikkataustajärjestelmillä OpenGL:n lisäksi. Datan visualisointimoduli edellyttää kuitenkin OpenGL:n käyttämistä renderöintitaustajärjestelmänä.
Tässä opinnäytetyössä tutkitaan optimaalista tapaa muuttaa Qt:n 3Dtietojen visualisoinnille tarkoitettua modulia toimimaan useammalla eri renderöintitaustajärjestelmällä. Lisäksi esitellään uuden modulin toteutuksessa käytetyn Qt:n 3D-modulin julkisen C++ API:n laajennuksen suunnitelma. Vaatimukset tiedon visualisointimodulin uudelle toteutukselle on johdettu nykyisestä moduulista.
Uuden version toteutusta arvioidaan sitä varten kehitetyllä testisovelluksella. Tulokset osoittavat, että uusi moduuli voi parantaa suorituskykyä laitteissa, jotka tukevat nykyaikaisia renderöintitaustajärjestelmän ominaisuuksia.
With its vast majority of modules, Qt offers a rich framework for developing different interfaces. Over the years, various modules have been added and removed from Qt. One such module is a module for visualizing data in 3D. The module was added when Qt relied heavily on the OpenGL rendering backend. Nowadays, in addition to OpenGL, Qt supports rendering 3D graphics on other popular graphics backends. Nevertheless, the data visualization module requires using OpenGL as the rendering backend.
This thesis investigates the optimal way to change Qt’s module dedicated to 3D data visualization to work on different rendering backends. Additionally, a design for an extension to public C++ API for Qt’s 3D module, used in implementing the new module, is presented. The requirements for the new implementation of the data visualization module are derived from the current module.
The implementation of the new version is evaluated with a tailor-made test application. The results indicate that the new module can improve performance on devices supporting modern graphics backend features.
Qt tarjoaa paljon erilaisia moduleita ja runsaan kehyksen erilaisten käyttöliittymien kehitykseen. Vuosien varrella Qt-ympäristöön on lisätty ja siitä on poistettu erilaisia moduleja. Yksi tällainen moduli on tarkoitettu datan visualisointiin 3D-muodossa. Kyseinen moduli lisättiin, kun Qt luotti vielä voimakkaasti OpenGL-renderöintitaustajärjestelmään. Nykyään Qt tukee 3D-grafikan esittämistä muillakin suosituilla grafikkataustajärjestelmillä OpenGL:n lisäksi. Datan visualisointimoduli edellyttää kuitenkin OpenGL:n käyttämistä renderöintitaustajärjestelmänä.
Tässä opinnäytetyössä tutkitaan optimaalista tapaa muuttaa Qt:n 3Dtietojen visualisoinnille tarkoitettua modulia toimimaan useammalla eri renderöintitaustajärjestelmällä. Lisäksi esitellään uuden modulin toteutuksessa käytetyn Qt:n 3D-modulin julkisen C++ API:n laajennuksen suunnitelma. Vaatimukset tiedon visualisointimodulin uudelle toteutukselle on johdettu nykyisestä moduulista.
Uuden version toteutusta arvioidaan sitä varten kehitetyllä testisovelluksella. Tulokset osoittavat, että uusi moduuli voi parantaa suorituskykyä laitteissa, jotka tukevat nykyaikaisia renderöintitaustajärjestelmän ominaisuuksia.
Kokoelmat
- Avoin saatavuus [32150]