gpt4 book ai didi

directx-11 - 使用 DirectXMath 高效计算法线

转载 作者:行者123 更新时间:2023-12-02 02:09:48 33 4
gpt4 key购买 nike

我需要计算一些三角形的法线,其中我有一个顶点向量,其中每个顶点都有 x、y、z 坐标。 i1、i2、i3是三角形三个顶点向量中的索引。

我正在使用 <DirectXMath.h>并写了这个似乎有效。

XMFLOAT3 normal;
///

XMVECTOR v1 = XMLoadFloat3(&XMFLOAT3(verts[i1].x, verts[i1].y, verts[i1].z));
XMVECTOR v2 = XMLoadFloat3(&XMFLOAT3(verts[i2].x, verts[i2].y, verts[i2].z));
XMVECTOR v3 = XMLoadFloat3(&XMFLOAT3(verts[i3].x, verts[i3].y, verts[i3].z));
XMVECTOR n = XMVector3Cross(XMVectorSubtract(v2 ,v1), XMVectorSubtract(v3 ,v1));
XMStoreFloat3(&normal, n);

然而,它似乎有比实际计算更多的负载和存储,并且想知道是否有更好的方法来实际执行此操作?还是加载和存储是“廉价”操作?

我必须为每个三角形运行它,相对于我的其余代码,它会花费大量时间,因此欢迎提高速度。

最佳答案

尝试添加 #define _XM_NO_INTRINSICS_#include <DirectXMath.h> 之前.这将禁止在库中使用 SSE,允许编译器更自由地进行自己的优化。

关于directx-11 - 使用 DirectXMath 高效计算法线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13417541/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com