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

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

1

05.01.2005, 15:40

Pixel aus einer Textur auslesen und in eine andere Speichern

Hallo,

ich möchte gerne alle Pixel aus einer Textur in eine andere kopieren beide Texturen haben die gleiche größe und das gleiche Format. Wie kann ich nun alle Pixel der einen Textur in eine andere kopieren.

:()
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

05.01.2005, 16:41

Hi,

textur 1 locken
textur 2 locken
pixel von textur 1 auf textur 2 stopfen
textur 2 entlocken
textur 1 entlocken

fertig ;)

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

3

05.01.2005, 16:49

Soweit war ich auch schon... wie stopf ich die Pixel
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

4

05.01.2005, 17:36

Na indem du das eine Pixel (eher Texel) von der einen Textur in die andere Textur kopierst.

1 Texel == ein einfacher Datenbereich

Das sollte reichen. Kannst dir aber auch mal IDirect3DDevice9::UpdateTexture anschauen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

5

05.01.2005, 19:37

OK OK

Also ich hab jetzzt schon zwei texturen kopiert ging auch ohne Probleme.

Wenn es sich aber um ein Render Target handel geht gar nichts wieso ? Also mein Programm stürtzt dann immer ab.
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

6

05.01.2005, 19:46

schau dir mal die funktion memcpy (memorycopy) an, die kannste auf deine Farbpointer anwenden und kopieren.

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

7

05.01.2005, 20:01

Das Gibt den größten Absturz

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
D3DSURFACE_DESC ddsd_target;
            D3DSURFACE_DESC ddsd_source;
            D3DLOCKED_RECT ddlr_target;
            D3DLOCKED_RECT ddlr_source;
    
            p_sourceTex->GetLevelDesc(0,&ddsd_source);
            p_targetTex->GetLevelDesc(0,&ddsd_target);
            p_sourceTex->LockRect(0,&ddlr_source,0,0);
            p_targetTex->LockRect(0,&ddlr_target,0,0);

            // Umwandlen der Zeiger
            DWORD* p_tpixel = (DWORD*)ddlr_target.pBits;
            DWORD* p_spixel = (DWORD*)ddlr_source.pBits;

            for(int y = 0; y < ddsd_source.Height; y++)
            {
                for(int x = 0; x < ddsd_source.Width; x++)
                {
                    memcpy(p_tpixel++,p_spixel++,sizeof(DWORD));
                }
            }

            p_targetTex->UnlockRect(0);
            p_sourceTex->UnlockRect(0);


Endet nur in einem Absturtz.
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

8

05.01.2005, 20:45

Das ganze funktioniert immer dann nicht

ER stürtzt immer nur dann ab wenn es sich bei der Textur um ein RenderTarget handelt ist es eine Textur aus einer Datei funktioniert alles. Ich will aber aus einem RenderTarget kopieren.
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

9

06.01.2005, 01:21

Hast du auch geprüft das der Lock erfolgreich war? Wenn nämlich nicht, dann ist der Pointer ungültig, was mit einer Access Violation quitiert wird. Ein RenderTarget kann man nicht mal eben locken. Das geht nur wenn es nicht gesetzt ist, oder wenn es der Original BackBuffer ist mit dem Flag D3DPRESENTFLAG_LOCKABLE_BACKBUFFER.

C-/C++-Quelltext

1
2
3
4
5
6
7
            for(int y = 0; y < ddsd_source.Height; y++)
            {
                for(int x = 0; x < ddsd_source.Width; x++)
                {
                    memcpy(p_tpixel++,p_spixel++,sizeof(DWORD));
                }
            } 

Seh ich recht? Ein bissel nachdenken. Beide for-Schleifen sind mehr als unnötig.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige