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

15.09.2006, 20:57

Blur Effekt klappt nur halb

Hi,

ich bastele mir grad so ne art mini blur effekt. Es klappt auch wunderbar man kann schön sehen wie er die pixel von links nach rechts umrechnet und so nur wenn er ganz rechts angelangt ist sagt er mir:

a wäre corrupted

Hier meine funktion:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void blur_effekt(HDC hdc)
{
    for(unsigned int x=0; x<1024; x++)
    {
        for(unsigned int y=0; y<768; y++)
        {
            char a[4];
            DWORD Farbe=GetPixel(hdc,x,y);
            memcpy(&a[0], &Farbe, 4);
            memcpy(&a[1], &Farbe,4);
            memcpy(&a[2], &Farbe,4);
        
            
                a[0] = a [0] - 22;
                a[1] = a [1] - 22;
                a[2] = a [2] - 22;
            
            a[2] = a [2] + 20;
        
            SetPixel (hdc, x , y, RGB(a[0], a[1], a[2]));

        
            
        }


    }
}


vielen dank schonmal für eure hilfe
theprogrammer
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Anonymous

unregistriert

2

15.09.2006, 21:21

Was sagt der Debugger?

3

15.09.2006, 21:51

Zitat

Was sagt der Debugger?


nichts. Ich bekomme lediglich einen Runtime Error:

Quellcode

1
Runtime Ceck Failure #2 Stack around the variable 'a' was corrupted


Ich poste mal noch den funktionsaufruf:

C-/C++-Quelltext

1
2
3
4
5
6
7
             else if(LOWORD (wParam) == ID_BLUR)
             {
                hdc = GetDC (hwnd);
                blur_effekt(hdc);
                ReleaseDC (hwnd, hdc);  

             }


das dämmliche daran ist dass der effekt klappt nur dass er gerade wenn er den effekt ausgeführt hat stürzt er mit dem run time error ab...[/quote]
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Anonymous

unregistriert

4

15.09.2006, 21:52

Ein Debugger sagt immer was, nichts sagt der nie. Das kannste mir net erzählen.

Benutz mal F5, F9, F10 und F11. Die bringen wahre Wunder ans Tageslicht.

5

15.09.2006, 22:08

Joa der spuckt bei allen tasten dinge aus aber nie was im zusammenhang mti meinem Runtime Error steht ich bekomm nur immer die Meldung

C-/C++-Quelltext

1
Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

15.09.2006, 22:11

Dein Code ist äußerst merkwürdig.
Schau dir mal die memcpys an und überlege dir, welche Bytes du da überschreibst.

Anonymous

unregistriert

7

15.09.2006, 22:11

benutz den debugger mal richtig....

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

15.09.2006, 22:13

C-/C++-Quelltext

1
2
3
4
5
            char a[4]; 
            DWORD Farbe=GetPixel(hdc,x,y); 
            memcpy(&a[0], &Farbe, 4); 
            memcpy(&a[1], &Farbe,4); 
            memcpy(&a[2], &Farbe,4);


sizeof( char ) == 1...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

15.09.2006, 22:27

lol, alle gleichzeitig :P

Phili

unregistriert

10

15.09.2006, 22:31

@theprogrammer

C-/C++-Quelltext

1
memcpy(&a[0], &Farbe, 4);

würd schon genügen

C-/C++-Quelltext

1
2
3
memcpy(&a[0], &Farbe, 4);
memcpy(&a[1], &Farbe,4);
memcpy(&a[2], &Farbe,4);

ist nicht notwendig.

Mit

C-/C++-Quelltext

1
memcpy(&a[0], &Farbe, 4);

füllst du alle 4 Bytes von a;

Werbeanzeige