In allen Fällen ist "textureData" äquivalent (ist also immer gleich Groß nur mit anderen Graustufen).
Das Problem ist nun, dass bei jedem aktualisieren der Textur, der Arbeitsspeicher Bedarf wächst. Obwohl die Textur "Image1Texturen" ja eigentlich gelöscht wird.
Was jemand woran das liegt? Und warum wird die "Image1Texturen" überhaupt im RAM gespeichert und nicht im Grafikspeicher?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Dass dabei Arbeitsspeicher verbrauch auftritt liegt daran, dass der Grafik-RAM in den normalen RAM gemappt werden muss, aber das ist hier nicht das Problem.
Wo rufst du denn glDeleteTextures auf? Ohne glDeleteTextures werden die Texturen auf ewig (oder je nach Treiber bis zum Beenden deiner Anwendung) im Grafik-RAM rumliegen.
Wenn du übrigens immer die gleiche Größe hast, empfehle ich dir dir mal glTexSubImage2D anzuschauen. Dann musst du die Texturen nur einmal bei Anwendungsstart erzeugen und dann kannst du den Inhalt mit glTexSubImage2D ändern, ohne dass du die Texturen neu erstellen musst.
Gruß Lord Horazont
//Edit: nochwas: Wo rufst du eigentlich glGenTextures auf? Alleine das allozieren eines Array reicht da nicht.
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mit "glDeleteTextures" funktioniert es nun bestens glTexSubImage2D kann ich leider nicht verwenden, da in gewissen Situationen die Textur ihre Größe ändern könnte, aber gut zu wissen für die Zukunft
Könntest du mir vielleicht noch meine Neugierde befriedigen und genauer erklären wie es mit dem mappen des Grafik-RAM in den normalen RAM abläuft und warum?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Öhhh... Genauer erklären kann ich das nicht. Aber passieren wirds wohl deswegen, weil die Anwendung sonst nicht auf diesen Speicher schreiben könnte oder so..
Aber was glTexSubImage2D betrifft: Du könntest es so lange verwenden, bis die Textur ihre größe ändert und sie erst dann neu allozieren. Ist zwar nen bissl Programmieraufwand, aber letzendlich dürfte es sich lohnen, vorrausgesetzt, du machst es nicht alle 1.1 Frames (d.h. jeden Frame, außer jeden 10.)
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Na ja. Die Sache mit dem RAM muss nicht so sein. Ich hatte es teilweise schon, dass ich trotz Texturen und Kontext gerade mal 1 MB Speicherverbrauch hatte. Auf meinem aktuellen System ist das aber auch anders. Bei Grafikkarten die keinen eigenen Speicher haben ist das sogar noch krasser, da der Treiber den Speicher im RAM ablegt und dann "die Anwendung" einen imensen Verbrauch hat.
glTexSubImage: Ja wenn sich nur die Daten verändern (nicht format oder größe), dann sollte man eher dazu greifen. Also bei Video oder RenderToTexture. In meinem Loader schmeiße ich die Textur weg und erstelle sie komplett neu. Das ist auch vollkommen okay. Du solltest nur nicht häufig glTexImage auf ein bestehendes Objekt benutzen, denn dann wird die Textur interm umgeformt etc. Dann lieber ganz wegschmeißen. Das ist schonender für den Treiber. Da spezielle Optimierungen einzubauen halte ich eher für nicht so sinnvoll. Das was man im Endeffekt spart investiert man dann so in seine Strukturen. Ich weiß nicht.
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.