【发布时间】:2016-02-01 23:08:31
【问题描述】:
我正在使用 SharpDX 在 C# 中创建一个基本的 DirectX 程序。我正在尝试使用常量缓冲区将一些数据向下传递到着色器,但是当我创建缓冲区时,DirectX 会因参数不正确而崩溃。启用调试层不再给我信息。我的代码如下所示:
consts = new ConstantBufferData() { fTime = 0.0f };
constantBuffer = D3D11.Buffer.Create<ConstantBufferData>(device, D3D11.BindFlags.ConstantBuffer, ref consts);
其中 ConstantBufferData 是这样定义的结构:
[StructLayout(LayoutKind.Sequential)]
struct ConstantBufferData
{
public float fTime;
};
奇怪的是,当我将缓冲区创建为顶点缓冲区时,整个程序编译并正常运行,但将其用作context.PixelShader.SetConstantBuffer(0, constantBuffer); 的常量缓冲区。
【问题讨论】:
-
你正在堆栈上创建缓冲区,我不知道 SharpDX,但我猜这不是故意的。
标签: c# .net parameters directx sharpdx