2016-11-11 4 views
1

В настоящее время я работаю над переходом с SlimDX на SharpDX. Некоторые вещи отличаются друг от друга, например, загрузка шейдеров и т. Д.:SharpDX ShaderBytecode.CompileFromFile to PixelShader

У меня проблема с созданием класса PixelShader (то же самое относится к классу VertexShader). Проблема в том, что каждый пример, который я нашел по этому вопросу, не будет компилироваться.

Например:

using (var pixelShaderByteCode = ShaderBytecode.CompileFromFile(filename, "PS", "ps_5_0", shaderFlags)) 
    shader.PixelShader = new SharpDX.Direct3D11.PixelShader(device, pixelShaderByteCode); 

Проблема заключается в том, SharpDX.Direct3D11.PixelShader не принимает ComplilationResult в качестве параметра. Я мог бы использовать vertexShaderByteCode.Bytecode, который является ShaderBytecode, но это также недействительно.

Существует vertexShaderByteCode.Bytecode.Data, который является DataStream. Я мог бы создать byte[], но я думаю, что это можно было бы решить проще? Я что-то пропустил?

с помощью: SharpDX 3.1.1

ответ

1

Я нашел проблему:

Похоже, что мне нужно ссылаться на SharpDX.D3DCompiler также, чтобы собрать для DX11. Он использовал компилятор DX9.

SharpDX.D3DCompiler.ShaderBytecode(DX11)противSharpDX.Direct3D9.ShaderBytecode(DX9)

Я оставлю это для тех, кто имеет те же борьбу.

0

CompilationResult возвращается компиляцией, и вы можете проверить, является ли байт-код нулевым, если это так, вы можете проверить коды ошибок (лучше всего отлаживать хотя :)).

HasErrors : boolean 
Message : string 

Проверьте их также.

Смежные вопросы