首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于常量缓冲区的aligned_malloc() vs

用于常量缓冲区的aligned_malloc() vs
EN

Stack Overflow用户
提问于 2020-01-18 08:14:52
回答 1查看 233关注 0票数 1

在C++中,我们有关键字alignas(n)_aligned_malloc(m,n)函数。

alignas适用于该类型,而aligned_malloc则适用于您所称的任何类型。

我可以使用alignas(16)来满足Direct3D常量缓冲区16字节对齐的要求吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-18 08:24:38

是的,你可以这样用:

代码语言:javascript
复制
struct SceneConstantBuffer
{
    alignas(16) DirectX::XMFLOAT4X4 ViewProjection[2];
    alignas(16) DirectX::XMFLOAT4 EyePosition[2];
    alignas(16) DirectX::XMFLOAT3 LightDirection{};
    alignas(16) DirectX::XMFLOAT3 LightDiffuseColor{};
    alignas(16) int NumSpecularMipLevels{ 1 };
};

不起作用的是__declspec(align)..。

编辑:如果您想在结构本身上使用它,那么类似于此的东西也应该会工作:

代码语言:javascript
复制
struct alignas(16) SceneConstantBuffer
{
    DirectX::XMMATRIX ViewProjection; // 16-bytes
    ...
    DirectX::XMFLOAT3 LightDiffuseColor{};
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59798721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档