首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DirectXMath高效计算法线

使用DirectXMath高效计算法线
EN

Stack Overflow用户
提问于 2012-11-16 21:25:32
回答 1查看 1.4K关注 0票数 3

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

我正在使用<DirectXMath.h>,并写了这篇文章,看起来还不错。

代码语言:javascript
复制
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);

然而,它似乎有比实际计算更多的加载和存储,并想知道是否有更好的方法来实际做到这一点?或者加载和存储是“便宜”的操作?

我必须为每个三角形运行它,并且相对于我的其余代码,它需要大量的时间,所以速度的提高将是受欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2013-09-04 02:13:49

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13417541

复制
相关文章

相似问题

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