Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

02.02.2011, 11:33

Bitmap aus Texture bestimmen

Hallo Zusammen

Ich habe eine kurze Frage. Ich erstelle eine Textur anhand eines Bitmaps, das ist kein Problem und funktioniert auch tadellos.

C#-Quelltext

1
Texture tx = Texture.FromBitmap(device, bitmap, 0, Pool.Managed);


Gibt es eine Möglichkeit, aus der Textur wieder ein Bitmap zu erstellen??

Danke und Gruss
Master Chief

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

02.02.2011, 12:14

Wofür genau brauchst du das? Es gibt schon wege an die einzelnen Pixel zu kommen. Abgesehen davon solltest du vielleicht dazuschreiben welche API das ist, ich vermute mal XNA oder SlimDX!?

3

02.02.2011, 12:16

Ja, die einzelnen Pixel würden mir auch reichen, wie macht mach das?

Es geht um DirectX

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

02.02.2011, 12:21

Also ist das wirklich Managed DirectX!? Wenn ja würd ich der sehr empfehlen SlimDX zu verwenden weil Managed DX ist hoffnungslos veraltet. Anyway, an die Pixel kommst du indem du die Texture lockst (Texture.LockRectangle).

5

02.02.2011, 13:23

Danke, das mit dem LockRectangle ist schonmal was..

aber wie muss ich das weiter machen?? BZW. wie komme ich jetzt an die Pixel?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

02.02.2011, 13:33

LockRectangle() liefert dir bereits die Daten in der Textur, wie die genau aussehen hängt von deinem Texturformat ab, aber prinzipiell liegen deine Pixel bereits vor dir, du musst sie jetzt nur noch aufsammeln. Nur vielleicht noch der Hinweis dass das Locken von Ressourcen jetzt nicht so der Burner ist was Performance angeht, ich würd mir also immer überlegen ob ich das wirklich machen muss. Vor allem da du ja offenbar was aus der Textur lesen willst hab ich so meine Zweifel dass, was auch immer du gerade versuchst, wirklich eine gute Lösung für dein eigentliches Problem ist...

7

02.02.2011, 13:44

Also, kurze Info =)

In meinem Programm, kann ich verschiedenen Objekten eine Textur geben.
Ebenfalls kann ich bei den Einstellungen angeben, ob ich die Textur, die Farbe oder gar nichts von beidem angezeigt haben möchte.

Wenn ich jetzt eine Fläche mit einer Textur habe, und als Ansichts - Modus "Farbe" wähle, möchte ich die Durchschnittsfarbe der Textur anzeigen.

Nun, um diese Farbe zu ermitteln, brauche ich die einzelnen Pixel. bzw. einfach einige davon.
Bisher mache ich das so, dass ich beim erstellen der Textur, zusätzlich noch das Bitmap mitgebe, und aus diesem dann die Pixel auslese. Das funktioniert jetzt aber nicht mehr, aus strukturellen Gründen.

Desshalb möchte ich diese "Durchschnittsfarbe" direkt anhand der Textur ermitteln können.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

02.02.2011, 13:50

Naja gut ok, nachdem du deine Textur ja in den Managed Pool gelegt hast hält sich D3D sowieso eine Kopie im RAM, dürfte in dem Fall also kein allzu großes Problem sein ^^

9

02.02.2011, 13:52

Also wie jetzt =)

Soll ich das so tun, und wenn ja, wie?

Von der Methode LockRectangle(..) erhalte ich ein GraphicStream.. was soll ich mit dem??

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

02.02.2011, 14:01

http://msdn.microsoft.com/en-us/library/ms919643.aspx

Aber wie gesagt, ich würde dir sehr empfehlen SlimDX zu verwenden...

Werbeanzeige