• Create Account

### #Actualpapulko

Posted 10 January 2013 - 09:31 AM

Error handling with the CompileFromFile function is a somewhat different from most other d3dx functions since it's dealing with compiling hlsl code. If I remember it right you can access any hlsl syntax errors by passing a ID3D10Blob** as the second-to-last parameter ('ppErrorMsgs').

If you want to put the error message in a MessageBox you would need something like
ID3D10Blob* pErrorBlob = NULL;
if (FAILED(D3DX11CompileFromFile("Effects.fx", 0, 0, "VS", "vs_4_0", 0, 0, 0, &VS_Buffer, &pErrorBlob, 0)))
{
char* pErrors_mb = static_cast<char*>(pErrorBlob->GetBufferPointer());
wchar_t pErrors_w[512];
mbstowcs(pErrors_w, pErrors_mb, 512);
MessageBox(NULL, pErrors_w, L"Error", MB_OK);
return 0;
}

edit: On a sidenote, MSDN recommends precompiling any shader code (for example by using fxc.exe) rather than using this function.

### #4papulko

Posted 10 January 2013 - 09:30 AM

Error handling with the CompileFromFile function is a somewhat different from most other d3dx functions since it's dealing with compiling hlsl code. If I remember it right you can access any hlsl syntax errors by passing a ID3D10Blob** as the second-to-last parameter ('ppErrorMsgs').

If you want to put the error message in a MessageBox you would need something like
ID3D10Blob* pErrorBlob = NULL;
if (FAILED(D3DX11CompileFromFile("Effects.fx", 0, 0, "VS", "vs_4_0", 0, 0, 0, &VS_Buffer, &pErrorBlob, 0)))
{
char* pErrors_mb = static_cast<char*>(pErrorBlob->GetBufferPointer());
wchar_t pErrors_w[512];   mbstowcs(pErrors_w, pErrors_mb, 512);
MessageBox(NULL, pErrors_w, L"Error", MB_OK);
return 0;}

edit: On a sidenote, MSDN recommends precompiling any shader code (for example by using fxc.exe) rather than using this function.

### #3papulko

Posted 10 January 2013 - 09:29 AM

Error handling with the CompileFromFile function is a somewhat different from most other d3dx functions since it's dealing with compiling hlsl code. If I remember it right you can access any hlsl syntax errors by passing a ID3D10Blob** as the second-to-last parameter ('ppErrorMsgs').

If you want to put the error message in a MessageBox you would need something like
ID3D10Blob* pErrorBlob = NULL;if (FAILED(D3DX11CompileFromFile("Effects.fx", 0, 0, "VS", "vs_4_0", 0, 0, 0, &VS_Buffer, &pErrorBlob, 0))){   char* pErrors_mb = static_cast<char*>(pErrorBlob->GetBufferPointer());   wchar_t pErrors_w[512];   mbstowcs(pErrors_w, pErrors_mb, 512);   MessageBox(NULL, pErrors_w, L"Error", MB_OK);   return 0;}

edit: On a sidenote, MSDN recommends precompiling any shader code (for example by using fxc.exe) rather than using this function.

### #2papulko

Posted 10 January 2013 - 09:29 AM

Error handling with the CompileFromFile function is a somewhat different from most other d3dx functions since it's dealing with compiling hlsl code. If I remember it right you can access any hlsl syntax errors by passing a ID3D10Blob** as the second-to-last parameter ('ppErrorMsgs').

If you want to put the error message in a MessageBox you would need something like
ID3D10Blob* pErrorBlob = NULL;if (FAILED(D3DX11CompileFromFile("Effects.fx", 0, 0, "VS", "vs_4_0", 0, 0, 0, &VS_Buffer, &pErrorBlob, 0))){   char* pErrors_mb = static_cast<char*>(pErrorBlob->GetBufferPointer());   wchar_t pErrors_w[512];   mbstowcs(pErrors_w, pErrors_mb, 512);   MessageBox(NULL, pErrors_w, L"Error", MB_OK);   return 0;}

edit: On a sidenote, MSDN recommends precompiling any shader code (for example by using fxc.exe) rather than using this function.

### #1papulko

Posted 10 January 2013 - 09:19 AM

Error handling with the CompileFromFile function is a somewhat different from most other d3dx functions since it's dealing with compiling hlsl code. If I remember it right you can access any hlsl syntax errors by passing a ID3D10Blob** as the second-to-last parameter ('ppErrorMsgs').

If you want to put the error message in a MessageBox you would need something like

ID3D10Blob* pErrorBlob = NULL;
if (FAILED(D3DX11CompileFromFile("Effects.fx", 0, 0, "VS", "vs_4_0", 0, 0, 0, &VS_Buffer, &pErrorBlob, 0)))
{
char* pErrors_mb = static_cast<char*>(pErrorBlob->GetBufferPointer());
wchar_t pErrors_w[512];
mbstowcs(pErrors_w, pErrors_mb, 512);
MessageBox(NULL, pErrors_w, L"Error", MB_OK);
return 0;
}



PARTNERS