error X3000: Illegal character in shader file
Ostatnio zmodyfikowano 2014-10-21 17:43
Mig Temat założony przez niniejszego użytkownika |
error X3000: Illegal character in shader file » 2014-10-20 23:33:52 Witam, mam problem mianowicie gdy próbuję skompilować przykładowy kod z książki otrzymuje taki komunikat jak w tytule , pisząc przykładowy mam na myśli to że działają mi wszystkie przykłady w których nie został wykorzystany plik .fx natomiast wszystkie które z niego korzystają powodują taki komunikat podczas kompilacji.Dodam że korzystam z książki "projektowanie gier 3d. wprowadzenie do technologii directx 11" oraz postępowałem zgodnie z instrukcjami w niej zawartej przy konfiguracji projektu oraz opierałem się na http://www.d3dcoder.net/phpBB/viewtopic.php?f=4&t=295 by naprawić błąd z Effects11 (skompilowałem Effects11 pod visual 2013 debug/release).
|
|
Mig Temat założony przez niniejszego użytkownika |
» 2014-10-21 08:47:07 Mogę dodać jeszcze że przykładowe programy z dokumentacji DirectX działają mimo podobnej budowy do tych z książki , w takim razie błąd chyba znajduję się w kodzie wczytującym efekty co chyba nie powinno się zdarzać ponieważ jest to kod czysto pobrany , dołączony do treści książki. void WavesDemo::BuildFX() { std::ifstream fin( "fx/color.fxo", std::ios::binary ); fin.seekg( 0, std::ios_base::end ); int size =( int ) fin.tellg(); fin.seekg( 0, std::ios_base::beg ); std::vector < char > compiledShader( size ); fin.read( & compiledShader[ 0 ], size ); fin.close(); HR( D3DX11CreateEffectFromMemory( & compiledShader[ 0 ], size, 0, md3dDevice, & mFX ) ); mTech = mFX->GetTechniqueByName( "ColorTech" ); mfxWorldViewProj = mFX->GetVariableByName( "gWorldViewProj" )->AsMatrix(); }
cbuffer cbPerObject { float4x4 gWorldViewProj; };
struct VertexIn { float3 Pos: POSITION; float4 Color: COLOR; };
struct VertexOut { float4 PosH: SV_POSITION; float4 Color: COLOR; };
VertexOut VS( VertexIn vin ) { VertexOut vout; vout.PosH = mul( float4( vin.Pos, 1.0f ), gWorldViewProj ); vout.Color = vin.Color; return vout; }
float4 PS( VertexOut pin ) : SV_Target { return pin.Color; }
technique11 ColorTech { pass P0 { SetVertexShader( CompileShader( vs_5_0, VS() ) ); SetGeometryShader( NULL ); SetPixelShader( CompileShader( ps_5_0, PS() ) ); } }
|
|
Monika90 |
» 2014-10-21 11:47:16 A plik fx/color.fxo skąd wziąłeś? Sprawdź jakiego ten plik używa kodowania, może jest w UTF-16, a DX11 wymaga ASCII, czy coś w tym rodzaju. |
|
Mig Temat założony przez niniejszego użytkownika |
» 2014-10-21 17:20:41 Zapisałem na nowo z kodowaniem ASCII oraz ustawiłem:
shader type = Effect(/fx) shader model = Shader Model 2 (/2_0)
po tych zabiegach pojawia się następny komunikat:
Error 1 error MSB6006: "fxc.exe" exited with code 1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets 1126 5 DirectX Nauka
|
|
Mig Temat założony przez niniejszego użytkownika |
» 2014-10-21 17:43:29 Okey , już sobie poradziłem musiałem ustawić Shader Model na 5 (/5_0) i wszystko jest okey. Dzięki za pomoc. |
|
« 1 » |