Ich würde dabei eher zu einer großen Textur tendieren und dann die Texturmatrix verändern. Dabei musst du dann aber möglicherweise um jedes Einzelbild einen 1-Pixel breiten Rahmen zeichnen, bei dem jeder pixel die farbe des benachbarten Pixels der noch im BIld ist hat. Diesen Rahmen dann aber nicht in den Auswahlrahmen des entsprechenden Einzelbilds integrieren.
Eigentlich wollte ich nur wissen wie ich den obrigen Code umschreiben muss, trozdem danke!
kennt zufällig irgendwer ein Programm mit dennen ich meine 24 256 * 256 großen Einzeltexturen in eine , wie oben
beschriebene, große Textur bekomme?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Bei 3D Texturen müsstest du schon 32 Ebenen haben. Und 3D Texturen müssten von der Hardware auch unterstützt werden.
Alles in eine Textur halte ich bei einer Animation nicht für Sinnvoll, da normal nur ein Bild der Animation aktuell dargestellt werden müsste. Und bei solche krummen Bilderanzahlen (24) bekommt man leicht schwierigkeiten. Überdimensionaler Programmieraufwand oder unnötige Speicherverschwendung.
Für von deinen Texturen bräuchtest du 2 Texturen um keinen Speicher zu verbrauchen aber ich denke dieser zusätzlich Aufwand ist die Mühe nicht Wert. Vor allem wenn man bedenkt, dass diese 1 Texturlösung nur dafür da ist Texturswitches zu vermeiden. Was bei extremen gebrauch performance schluckt. Aber in dem falle einer Animation sieht man höchstwahrscheinlich eh nur ein Bild pro Frame.
Das Laden deiner Animation würde ich so gestalten, dass du dies in eine Methode auslagerst und ihr einen Dateinamen übergibst.
Das Array wird dann definiert als dynamisches Array.
Code:
Ani:arrayof gluInt;
Und geladen wird dann so.
Code:
LoadAniFrame(Ani,'Doc40000.tga');
LoadAniFrame(Ani,'Doc40001.tga');
LoadAniFrame(Ani,'Doc40002.tga');
LoadAniFrame(Ani,'Doc40003.tga');
Wenn alles so klappt sollte er automatisch einzelne Einträge hinzufügen und das Array entsprechend erweitern. Aber um Ehrlich zu sein ist das alles andere als Sauber. Um ehrlich zu sein würde sich für eine Animation am Besten eine Klasse anbieten die sich dann auch automatisch um die Bildauswahl etc kümmert. Aber für den Anfang sollte das oben genug sein.
PS: Ich übernehme für den Code keine Garantie habe de4n nur mal eben so runter geschrieben.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also laut delphi3d.net geht es bei ATI bis 2048³ und bei NVidia aktuell sogar nur bis 512³. Du musst auch bedenken, dass dabei eine ganze schöne Menge an Speicher belegt wird. Wenn ich gerade nicht zu blöd zum Rechnen bin wird bei einer 512x512x512x4 Bytes per Pixel großen Textur auch schon eben mal 512MB an Speicher an verbraten. Also wenn man diese vollständig ausnutzt. Und viel Karten haben nur 256 und dann müssen dort die ganzen Buffer etc noch mit rein. Bei 2048 wäre man eben bei 32GB. Also ich denke mal nicht, dass man das wirklich ausnutzen kann. Das ist nur das was die Geräte maximal verarbeiten können. Aber man wird nie die volle Auflösung benutzen können.
PS: Bei 1D Texturen besteht diese PowerOfTwo Beschränkung selbstverständlich auch.
Hehe, das man es nicht ausnützen würde war mir vorher klar. Intessierte mich nur wie viel man reinpacken könnte. Mehr als 4 oder 8 Lagen in einer 3D Texture sieht man selten. In den kommenden Spielen wird sich dies sicher auf bis zu 16 erhöhen oder aber die wenden irgendwelche Tricks an bei all den Texture Effekten. Bestes Beispiel die UE3 mit ihrem neuen Texture Layer System das ähnlich wie ein Scenegraph aufgebaut ist. Jedenfalls in der rein visuellen Darstellung. Wie die das intern lösen würd mich schon sehr interessieren.
http://www.unrealtechnology.com/screens ... Editor.jpg
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
3D Texturen sind noch zu viel mehr gut. Zum Beispiel machst du eine Textur die aussieht wie ein Material (Holz) und dein Mesh würde dann aussehen als sei es aus eben diesem Holz geschnitzt worden. Bzw beim Verändern wäre de Effekt dann richtig klasse. 3D Visualisierung von irgendwelchen medizinischen Scanns. Oder für 3D Lichteffekte kann man solche Texturen auch schon benutzen. Ursprünglich wurde diese Textur nicht dazu gebaut damit mal einzelne Layer in eine Textur verpacken kann. Sondern halt für echte 3D Texture. Aber das ist leider extrem Speicherintensiv.
Ich denke aber wir triften gerade ein bisschen vom Ursprungsthema ab.
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Zumal wir ja auch erstmal bis zu 8 TU haben, die wir für die meisten dieser Effekte (insbesondere mit Shadern) ja wunderbar ausnutzen können, insbesondere dann auch, wenn man die Pow2 nicht ausnutzen kann. Nichtsdesto trotz will der Fragesteller ja eine 2D-Animation machen und da ist das nutzen von Texturkoordinaten die beste Lösung. Insbesondere, wenn die Sprites auch nicht der Pow2-Regel entsprechen.
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Ich glaube ich als der Fragesteller sollte mich mal wieder zu Wort melden.
Eigentlich wollte ich nur meine 24 Frames die ich mit meinem 3D-Programm gerendert habe innerhalb einer Sekunde
ablaufen lassen und das in einer Endlosschleife. (24 Frames deswegen damit es nach einer flüssigen Animation
aussieht). Ich kann die Bilder natürlich nochmal rendern mit weniger Frames und. Gibt es eigentlich irgendein 2D Grafikprogramm mit dem ich die Bilder in eine Einzeltextur packen kann?
Was denn Code von Lossy eX angehet, danke aber ich hab warscheinlich irgendwas falsch gemacht, jedfalls gehts
nicht: Fehlermeldung Inkompatible Dateitypen.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Zu dem Code. Das habe ich eben nur mal so hier im Forum getippt. Im Endeffekt kannst du es so gesatlten wie du möchtest. Ich wollte damit nur das prinzip verdeutlichen. Also eine Methode die automatisch ein Bild lädt und diese als Animationsframe in dein Array hinzufügt. So wie ich das da gemacht hatte ist das eine Möglichkeit von vielen. Du darfst natürlich das Array direkt ansprechen (also nicht mehr übergeben) oder was auch immer dein Herz begehrt. Und zu dem Fehler. Es wäre interessant zu erfahre wo der Fehler auftritt. Die Meldung alleine hilft uns nicht viel.
Als Grafikprogramm kann ich dir nur Gimp empfehlen. Es ist OpenSource und muss sich vor kostenplichtigen Produkten keineswegs verstecken.
Mitglieder in diesem Forum: 0 Mitglieder und 8 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.