【发布时间】:2016-11-08 02:07:57
【问题描述】:
我正在开发 Directx C++/CX(通用 Windows)项目。
顺便说一下,我对 Directx11 不是很熟悉。
我的代码主要基于 MSDN 上与使用交换链面板在 UWP 中渲染 directx 相关的示例项目。
现在我想在着色器中添加一个浮点变量。我相信这必须使用常量缓冲区来完成。目前这如下(并且有效):
//c++:
struct ModelViewProjectionConstantBuffer
{
DirectX::XMFLOAT4X4 model;
DirectX::XMFLOAT4X4 view;
DirectX::XMFLOAT4X4 projection;
//float distance;
};
//hlsl:
cbuffer ModelViewProjectionConstantBuffer : register(b0)
{
matrix model;
matrix view;
matrix projection;
//float distance;
};
现在,当我添加一个浮点数时,它会停止工作。当我更新常量缓冲区(在每个渲染帧之前发生)时,它会引发异常:
_d3dContext->UpdateSubresource(
_constantBuffer.Get(),
0,
NULL,
&_constantBufferData,
0,
0
);
异常是 SEHException(据我所知,这并没有告诉我任何信息)。
我将所有这些都基于以下页面: https://msdn.microsoft.com/en-us/library/ff476896(v=vs.85).aspx
谁能告诉我我做错了什么?
【问题讨论】:
标签: shader directx-11 hlsl c++-cx