Hallo zusammen,
ich versuche seit ca. einer Woche herauszufinden, warum die beiden, in der Überschrift genannten, Funktionen die, jeweils mit dem ersten Parameter übergebene Datei nicht finden können.
Obwohl ich die Datei im Explorer sehen und auch bearbeiten kann und der Dateipfad sowohl von mir als auch der Funktion PathFileExists überprüft wurde und er somit existiert, geben beide Funktionen Fehler wie
-Das System konnte die angegebene Datei nicht finden.
-ERROR_FILE_NOT_FOUND
-ERROR_PATH_NOT_FOUND
zurück.
Das Kompilieren des Shaders habe ich in eine externe Funktion verlegt, um nur noch die nötigsten Parameter übergeben zu müssen, wobei die Pfadübergabe hier problem- und fehlerlos abläuft.
Sobald dieser Pfad aber über D3DX11CompileFromFile / D3DCompileFromFile 'geöffnet' werden soll, also der Shader kompiliert werden soll, scheint der Pfad ungültig zu werden.
Hier die externe Funktion und der Aufruf:
|
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
41
42
|
//.hpp
virtual bool CompileD3DShader(char* filePath, char* entry, char* shaderModel, ID3D10Blob **buffer);
//.cpp
bool Dx11DemoBase::CompileD3DShader(char * filePath, char * entry, char * shaderModel, ID3D10Blob ** buffer)
{
DWORD shaderFlags = D3DCOMPILE_ENABLE_STRICTNESS;
#if defined (DEBUG) || defined (_DEBUG)
shaderFlags |= D3DCOMPILE_DEBUG;
#endif
ID3D10Blob* errorBuffer = 0;
HRESULT res;
res = D3DCompileFromFile((LPCWSTR)(filePath), 0, 0, entry, shaderModel, shaderFlags, 0, buffer, &errorBuffer);
if (FAILED(res))
{
if (errorBuffer != 0)
{
OutputDebugString((char*)errorBuffer->GetBufferPointer());
errorBuffer->Release();
}
return false;
}
if (errorBuffer != 0) errorBuffer->Release();
return true;
}
//.cpp; Der Aufruf der obigen Funktion
ID3D10Blob * vsBuffer = 0;
//Shader kompilieren
bool compileres = CompileD3DShader("data/Shader.fx", "vs_Main", "vs_5_0", &vsBuffer);
if (compileres == false)
{
MessageBox(NULL, TEXT("Error while creating the vertexshader!"), TEXT("Error"), MB_OK | MB_ICONERROR);
return false;
}
|
Vielen Dank im Voraus für eure Hilfe
PS.: Ja der Ordner "data" befindet sich im selben Verzeichnis wie die .exe und in diesem Ordner ist auch "Shader.fx"...bevor jemand fragt