DirectX GUI



  • Ich möchte in meinem Spiel eine GUI einbauen, die ich aber selber schreiben möchte! Biher habe ich das ganze mit Sprites zum Zeichnen gelöst, ist jedoch nicht das wahre, die render geschwindigkeit geht rapide runnter, was mich sehr verwundert! Ich frage mich ob man für soetwas andere Methoden verwendet?



  • in meiner Engine (die aber auch WIP ist 😉 ) verwende ich zum zeichnen von text in DirectX auch sprites damit ich ihn einfach skalieren kann. Im OpenGL renderer verwende ich einfach die FTGL bibliothek. Zum Rendern von Images nehme ich in DirectX einfach immer denselben vertexbuffer mit 4 vertices als rechteck, klatsch da eine textur drauf und skalier das Rechteck so wie ich das haben will. In OpenGL nehme ich ein Displaylist ansonsten bleibt alles gleich...

    Mich würde auch interessieren was hier die bevorzugte methode ist. Ein Profi bin ich noch längst nicht 🙂


  • Mod

    geschwindigkeitsprobleme kann es aus vielerei gruenden geben.
    - gui hat oft viel overdraw, also erst ein fenster, dann das client rect, dann menues darueber icons, texts usw. das kann ein problem sein, besonders auf aelteren karten und bei hoch aufloesenden texturen.
    - viele viele drawcalls. eien graphikkarte bzw der API ist es oft egal ob du 2triangles oder 200 zeichnest, es wird gleich lang dauern, einfach weil es einen gewissen overhead gibt pro aufruf. oft kannst du so mit 2000drawcalls schon das limit eines PCs erreichen, und das ist nicht viel fuer eine gui.
    - resource switching. die reihenfolge in der gezeichnet wird ist oft nicht optimal fuer die hardware, sondern so wie es die ueberlagerung der gui elemente erfordert. das dauernde wechseln von texturen, buffern usw. kann sehr auf die performance druecken.

    am besten schaust du dir einfach mal ein paar fertige guis an oder suchst nach informationen was spiele so nutzen.


Anmelden zum Antworten