AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia DirectX: Mehrere verzerrte Versionen eines Bildes aufsummieren
Thema durchsuchen
Ansicht
Themen-Optionen

DirectX: Mehrere verzerrte Versionen eines Bildes aufsummieren

Ein Thema von grizzly · begonnen am 4. Aug 2021 · letzter Beitrag vom 5. Aug 2021
Antwort Antwort
grizzly

Registriert seit: 10. Dez 2004
150 Beiträge
 
Delphi XE4 Professional
 
#1

DirectX: Mehrere verzerrte Versionen eines Bildes aufsummieren

  Alt 4. Aug 2021, 15:06
Hallo!

Ich möchte ein und das selbe Bild mehrere tausend male aufsummieren, wobei aber das Bild jedesmal leicht verzerrt ist.
Für die Verzerrung unterteile ich das Bild in Dreiecke, und die male ich mit verschobenen Koordinaten in ein neues Bild. Mehrere dieser Bilder summiere ich dann auf und bilde am Schluss den Mittelwert. (Ich habe das Prinzip im angehängten Bild mal angedeutet. (Die Kanten der Dreiecke müsst ihr euch natürlich gerade vorstellen ))
Das rechnet leider stun-den-lang

Ich bin nun nicht der DirectX Guru, vermute aber, dass man damit mein Problem performant lösen können sollte.
Ich habe mir vorgestellt, dass ich einen Triangle-Strip definieren muss, welcher mein Bild als Textur verwendet.
Für die Verzerrung muss ich den Dreiecken die neuen Koordinaten zuweisen, bevor ich sie in den Zielspeicher schreibe (wie auch immer das geht). Wobei das Bild dann derart geschrieben werden muss, dass es die bereits vorhandenen Daten nicht überschreibt, sondern lediglich seine Farbkanäle draufaddiert.
Für das aufsummierte Bild wäre es toll, wenn man da so ein R32G32B32 Format verwenden könnte, weil ich dann das Bild tausende male reinpinseln kann, ohne dass mir ein Kanal überläuft. Erst am Schluss müsste ich dann den Mittelwert bilden.

Das Ganze soll auch im Hintergrund laufen (als nicht auf dem Bildschirm), und die Bildgrößen sind moderat: 512×512 Pixel.

Meine Fragen an die Gurus: Bin ich da mit DirectX auf dem Holzweg? Und nach welchen Stichwörten muss ich googeln, damit ich was passendes finde? Die meisten Tutorials erklären mir 3D Game-Engines, das ist ja für meine Zwecke der Overkill. Ich ersaufe in den Details

Ich muss vermutlich:
- DirectX initialisieren
- Mein Bild in eine Textur umwandeln
- Ein Triangle-Strip definieren, und dem die Textur zuweisen (Sind da irgendwelche Normalen zu beachten?).
- Einen R32G32B32A32 Zielspeicher definieren, welcher das aufsummierte Bild beinhaltet. (Hängt die Verfügbarkeit von sowas am Ende von der Grafikkarte und dem verfügbaren Speicher ab?)
- Zigtausendmal neue Dreickspositionen bestimmen und meinen Trianglestrip jedesmal aufs neue verzerrt in den Zielspeicher kopieren (unter Verwendung ominöser Parameter)
- Meinen Zielspeicher auslesen und die RGB Werte mitteln.

Die Tutorials, welche ich bislang gefunden habe, sind Jahrzehnte alt, ich habe beim durcharbeiten dauernd mit Inkompatibilitäten zu meinem Delphi X4 zu kämpfen.

Bin für jeden Hinweis dankbar.

Viele Grüße
Michael
Miniaturansicht angehängter Grafiken
bildersummieren01.jpg  
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: DirectX: Mehrere verzerrte Versionen eines Bildes aufsummieren

  Alt 5. Aug 2021, 08:50
Ich vermute, es ist zielführender und weniger frustrierend, wenn du das Ganze gleich mit Visual Studio mit C++ beginnst.
Die Delphi-Übersetzungen der DirectX-Header (egal ob jetzt 9, 10, 11 oder 12) sind teilweise fehlerhaft und dann sucht man sich einen Wolf, um gewisse Sachen aus C++-Tutorials irgendwie in Delphi zu quetschen.
Das ist ja verlorene Zeit.

Als ich mich zuletzt damit beschäftigt hatte war es so, dass die kostenlose Community-Edition auch schon fertige Projekt-Vorlagen für UWP-DirectX-11/12 Projekte mitbrachte, so dass du zumindest die Schritte 1 und 2 und ggf. auch 3 schon fertig zur Anschauung hast.
https://docs.microsoft.com/en-us/win...tx-programming
https://docs.microsoft.com/en-us/win...user-interface

Diese Beispiele kannst du dir dann soweit runterstrippen, bis es für deine Belange passt.

Auch ein Blick auf verschiedene Repositories auf GitHub bringt dich vielleicht weiter:
Speziell diese Beispiele hier:
https://github.com/microsoft/DirectX...3D12HelloWorld
welche Bestandteil eines größeren Repository ist:
https://github.com/microsoft/DirectX-Graphics-Samples
  Mit Zitat antworten Zitat
grizzly

Registriert seit: 10. Dez 2004
150 Beiträge
 
Delphi XE4 Professional
 
#3

AW: DirectX: Mehrere verzerrte Versionen eines Bildes aufsummieren

  Alt 5. Aug 2021, 09:33
Ah, das hatte ich befürchtet
Aber man hofft ja bis zuletzt

Vielen Dank für die Links, ich werde mir das mal ansehen.

Viele Grüße
Michael
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz