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

09.02.2011, 15:30

Effekte verursachen extremen Framedrop

Hallo,

ich habe versucht in mein kleines Programm eine Effektdatei einzubinden. Diese wir auch geladen und die Einstellungen werden korrekt wiedergegeben. Das Problem ist das ich ohne Effektdatei 1500 fps habe und mit um die 10 fps.

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
29
30
31
32
33
34
35
36
37
38
39
40
    LPD3DXEFFECT effect;

    if( FAILED ( D3DXCreateEffectFromFile( d3dDevice, L"renderStats.FX", NULL, NULL, 0, NULL, &effect, NULL ) ) ) 

        //Fehler
        MessageBox ( NULL, L"Effect kann nicht geladen werden", L"Fehler!", MB_OK );

    else {

        D3DXEFFECT_DESC effectDesc;

        effect->GetDesc( &effectDesc );

        for( unsigned int i = 0; i < effectDesc.Techniques; ++i ) {
    
            D3DXHANDLE hTechnique = effect->GetTechnique( i );

            if( SUCCEEDED ( effect->ValidateTechnique( hTechnique ) ) ) {

                effect->SetTechnique( hTechnique );

                break;
            }
        }
    }
    
    unsigned int numPasses;

    effect->Begin( &numPasses, 0 );

    for(unsigned int i = 0; i < numPasses; ++i ) {

        effect->BeginPass( i );
            
        d3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, mesh->baseVertexIndex, 0, mesh->numVertices, mesh->startIndex, mesh->primitiveCount ); 

        effect->EndPass();
    }

    effect->End();


Nach ein paar Tests vermute ich das es an D3DXCreateEffectFromFile() liegt. Meine .fx datei sieht so aus :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
TECHNIQUE T1 {

    PASS P1 {
        
        FILLMODE = WIREFRAME;

    }

}


Ich habe sie ganz normal im Notepad geschrieben. Wird diese Datei eigendlich jedes Frame geöffnet, eingelesen und dann verarbeitet ?

Danke schonmal
Ludwig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

09.02.2011, 15:37

Wird diese Datei eigendlich jedes Frame geöffnet, eingelesen und dann verarbeitet ?

Naja, offenbar hast dus so programmiert dass das passiert. Dafür sind 10fps dann eigentlich eh schon verdammt viel ;)

3

09.02.2011, 17:44

Ahhh , dumm von mir ;)

Lade den Effekt jetzt einmal und speicher "LPD3DXEFFECT effect" in einem Array

danke :thumbup:

Werbeanzeige