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

11.06.2004, 18:12

In eine Textur zeichnen

Hallo,

ich habe folgenden Code mit dem kleine Wellen in eine Textur geschrieben werden sollen, ich habe ihn aus den DirectX Samples. Ich hab nur das Problem das bei mir einfach nichts in die Textur geschrieben wird.

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    // Bumpmap texture erstellen
    HRESULT hResult;
    if(FAILED(hResult = g_pD3DD->CreateTexture(dwWidth,dwHeight,1,0,fmtBumpMap,D3DPOOL_SYSTEMMEM,&m_pBumpMap))) {
        // Fehler
        DirectXError(__FILE__,__LINE__,hResult,"Fehler beim erstellen der Wasser Bumpmap");
        return NULL;
    }
    
    // Rechteck sperren und ein paar Bumps für Wellen hineinzeichnen
    D3DLOCKED_RECT d3dlr;
    if(FAILED(hResult = m_pBumpMap->LockRect(0,&d3dlr,0,0))) {
        // Fehler beim sperre der Textur
        DirectXError(__FILE__,__LINE__,hResult,"BumpMap:");
        return NULL;
    }

    m_pBumpMap->LockRect( 0, &d3dlr, 0, 0 );
    CHAR* pDst = (CHAR*)d3dlr.pBits;
    CHAR  iDu, iDv;

    for( DWORD y=0; y<dwHeight; y++ )
    {
        CHAR* pPixel = pDst;

        for( DWORD x=0; x<dwWidth; x++ )
        {
            FLOAT fx = x/(FLOAT)dwWidth - 0.5f;
            FLOAT fy = y/(FLOAT)dwHeight - 0.5f;

            FLOAT r = sqrtf( fx*fx + fy*fy );

            iDu  = (CHAR)( 64 * cosf( 300.0f * r ) * expf( -r * 5.0f ) );
            iDu += (CHAR)( 32 * cosf( 150.0f * ( fx + fy ) ) );
            iDu += (CHAR)( 16 * cosf( 140.0f * ( fx * 0.85f - fy ) ) );

            iDv  = (CHAR)( 64 * sinf( 300.0f * r ) * expf( -r * 5.0f ) );
            iDv += (CHAR)( 32 * sinf( 150.0f * ( fx + fy ) ) );
            iDv += (CHAR)( 16 * sinf( 140.0f * ( fx * 0.85f - fy ) ) );

            *pPixel++ = iDu;
            *pPixel++ = iDv;
        }
        pDst += d3dlr.Pitch;
    }


Weiß jemand wo das Problem liegt ? Bin mal für jede Hilfe dankbar
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

11.06.2004, 18:28

Unlock soll schon manchmal geholfen haben....

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

3

11.06.2004, 18:31

Nein das ist drinn

Nein ich habe ein UnlockRect aufgerufen. das habe ich nur nicht mitkopiert
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

4

11.06.2004, 18:32

Nochwas

Also die SChleifen werden auch alle aufgerufen aber es steht später einfach nichts in der Textur und ich weiß nicht warum *heul* :crying:
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

11.06.2004, 18:43

Hmm also er meldet keinerlei Fehler?

6

11.06.2004, 19:41

Ist aber schon richtig das deine Textur nur 16Bit Werte speichert, oder? Wie hast du geprüft das nichts in der Textur steht? Ist sie einfach nur Schwarz?

Schreib die Werte mal in eine TXT Datei, dann siehts du ob Werte in der TExtur stehen. Vieleicht sind sie einfach nur zu klein so das es so ausschaut als ob nichts geschrieben wurde.


Wie ist denn das Format deiner Textur?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

11.06.2004, 20:19

DIe funktion sit ja identisch mit der bumpwave funktion.......

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

8

16.06.2004, 14:57

Es lag am Pool

Hi das Problem lag am Pool der Textur man kann auf keine Textur zeichen die mit D3DPOOL_DEFAULT erstellt wurde nur mit SYSMEM oder MANAGED jetzt gehts
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

Werbeanzeige