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