Я создал простой проект SharpDX из учебника по indiedev (# 1, # 2, # 3).
Теперь я сталкиваюсь с ошибкой Метод не найден ‘IntPtr SharpDX.D3DCompiler.ShaderBytecode.get_BufferPointer ()’ когда я запускаю приложение.
У меня есть ссылка на следующие SharpDX DLL:
этот код является основным циклом:
public void Run()
{
//...
Initialize();
LoadContent();
RenderLoop.Run(renderWindow, () =>
{
//....
}
//...
}
public override void LoadContent()
{
ShaderBytecode vertexShaderByteCode = ShaderBytecode.CompileFromFile("shaders.hlsl", "VShader", "vs_4_0");
ShaderBytecode pixelShaderByteCode = ShaderBytecode.CompileFromFile("shaders.hlsl", "PShader", "ps_4_0");
vertexShader = new VertexShader(Device, vertexShaderByteCode); //--> error
pixelShader = new PixelShader(Device, pixelShaderByteCode);
//...
}
содержимое из shaders.hlsl:
struct VOut
{
float4 position : SV_POSITION;
float4 color : COLOR;
};
VOut VShader(float4 position : POSITION, float4 color : COLOR)
{
VOut output;
output.position = position;
output.color = color;
return output;
}
float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET
{
return color;
}
Что мне нужно добавить в файл shaders.hlsl?
Эта проблема является причиной старой версии сборки. Как Крис Мантл упомянул, что это помогает обновить до последней версии через NuGet. Вы можете получить это от Вот.
С файлом shaders.hlsl проблем не было. все работает сейчас отлично.