问题标签 [directxmath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Avoiding DirectXMath XMStore/load
I have previously done OpenGL
and am now learning some DirectX11
. One of the things in the new math library is the presence of Load/Store methods for vectors and matrices (for example http://msdn.microsoft.com/en-us/library/ee415635(v=vs.85).aspx).
For me this quirks me a lot having to store/load each vector and matrix when I want to use them - a lot of bulky code - and I was wondering if there are any nice, clean alternatives to the load/store procedures?
c++ - 计算 3D 世界交点
我将如何计算具有世界、视图和投影矩阵的世界中地形的交点。现在让我们说应该从我的 2D 光标坐标计算交点,我的光标后面的地形部分应该是交点。因此,如果我将鼠标放在屏幕的正中央,那么 2D 视图应该如下所示:
如果我们知道“Y”坐标,这个测试很容易,但是假设我们不知道这里的“Y”坐标(可能有山)......我绝对不知道如何有效地解决这个问题. 但这绝对是可能的。我检查了 CryEngine,从我可以看到它们在发射武器时显示子弹与地面的碰撞点。任何帮助将不胜感激,教程和任何东西。
谢谢米凯尔。
c++ - DirectX::XMMATRIX 错误 C2719: __declspec(align('16')) 不会对齐
好的,所以我正在研究我自己的 DirectX 框架所有关于制作 DirectX 框架的教程都是旧的并且使用了不推荐使用的东西所以我只是制作了我自己的,尽管我从旧教程中获取了一些东西并更新了它们以使用新的 Windows 8.1 SDK 和问题来了,我XMMATRIX
在使用原始代码时遇到错误D3DXMATRIX
这是 S_SHADER.h 的第 33 行:
这是 S_SHADER.h 的第 40 行:
这是 S_SHADER.cpp 的第 42 行:
实际上 41 包含所有代码,而 42 只有左括号,无论如何我做错了什么?
编辑: 不认为这会有所帮助,但我有一台带有 Visual Studio 2013 的 Windows 7 64 位计算机
matrix - Worldviewpoj范围
今天我调试了我的代码,发现我的 worldviewproj 很大(抱歉它不可读):
{ 4.91479736e+010, -6.29708390e+010, -863636224, 432034112 }
这是第一行,我正在尝试调试我的代码,因为我的应用程序没有显示任何内容。我的世界矩阵是单位矩阵,我的视图矩阵也很大。
所以我的问题是,worldviewproj 矩阵的范围是多少?或者它有那么大而且是别的东西是正常的吗?
编辑:发现我错误地设置了投影矩阵的 fovY :) 但是,...正如我所说的视图矩阵现在是问题:( 视图矩阵在每个条目中都有 -431602080
编辑2:我可以自己面对!我忘记将计算出的矩阵存储在我的相机类的视图变量中:|
c++ - 使用 XMFLOAT3 和 XMVECTOR 的内存异常
我正在尝试在 D3D 中为我的 Camera 类实现 Pitch/Yaw,但我的 Pitch() 函数抛出“访问冲突读取位置 0x0000008C”。
我用谷歌搜索了一下,发现由于 16 位对齐,我不能在类/结构中使用 XMVECTOR。但是我已经知道了,我仔细检查了它是否被声明为 XMFLOAT3 并且确实如此!
问题是,在我的相机类的所有其他功能中(比如更新视图矩阵,......)都不会抛出异常。它只是在一个功能中!
因此,这就是我声明使函数崩溃的类变量的方式(尽管我的所有变量都使其崩溃,并且它们的定义方式相同):
以下是我声明 Pitch 函数的方式:
我也使用 x86 作为架构,尽管 x64 给出了完全相同的结果(除了内存位置:D)。I 或 DirectXMath 库都无法访问“mRight”的 x、y 和 z 值。在我的例子中,DirectXMath 中的“mRight.x”是“__m128 x = _mm_load_ss(&pSource->x);”。
一些新的调试结果:当我从 WM_MOUSEMOVE 事件中调用“任何”函数时,这很奇怪。甚至我的函数 Walk(),当我按下一个键时它也能完美运行。
有史以来最奇怪的事情!
谢谢您的帮助!
c++ - XMMATRIX 对 2D 转换是否有效,还是我应该制作一个自定义的 3x3 矩阵套件?
我正在 Direct3D 11 之上构建一个高性能 UI 布局引擎。该应用程序是使用 Visual Studio 2013 开发的,面向 x64,适用于 Windows 7(带有平台更新)及更高版本。
我需要对可视树中的 2D 元素进行矩阵转换,我想知道使用 DirextXMath 的内置(SIMD 优化)XMMATRIX
及其相关函数是否对 2D 使用有效(因为它只需要 3x3 矩阵,而XMMATRIX
et al 是 4x4 ),或者我是否应该推出自己的矩阵类/函数(不过可能没有任何特定于 SIMD 的代码)。
在我看来,整个 4x4 矩阵意味着要执行大量冗余计算,但与非 SIMD 3x3 矩阵工作相比,这可能会被 SIMD 指令所抵消。
编辑:关于“过早的优化是万恶之源”(及其衍生产品)的评论在这里是多余的(具有讽刺意味的是,还为时过早,因为您对项目一无所知 - 或者我)。这个问题总结了我对某些观点感兴趣/了解更多。
c++ - 如何在 DirectX11 上简化矩阵乘法?
我可以简化以下语句以使其更易于阅读吗?关于对齐要求,我可以逐步执行乘法吗?
c++ - 使用 DirectXMath 进行矩阵乘法
我做了教程http://3dgep.com/introduction-to-directx-11。
在教程中,3 个矩阵(投影、视图和世界矩阵)被发送到顶点着色器并在那里相乘。
我想将 3 个矩阵相乘以得到一个必须发送到顶点着色器的矩阵。
当我尝试将它们与 XMMatrixMultiply() 函数相乘时,我得到一个访问违规错误。
d3dx - 如何在课堂上使用 Xmfloat(从 d3dx 迁移)
我正在尝试迁移到 directxmath,但是新代码给我带来了一些麻烦..
旧代码如下所示:
所以,我现在遇到的问题是 XMVector3Length 无法从 Vec3* 转换为 _m128
编辑:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb205510%28v=vs.85%29.aspx
似乎返回类型更改为向量,结果相同,而不仅仅是一个浮点数。
c++ - 不能将 XMVECTOR 与浮点数相乘
我从 DirectX 教程中获得了这些行代码,这些代码在教程中编译得很好:
但在我自己的项目中,我得到一个错误:
错误 4 错误 C2677:二进制“*”:未找到采用“DirectX::XMVECTOR”类型的全局运算符(或没有可接受的转换)d:\projects\3dtestproject\3dtestproject\application.cpp 76 1 3DTestProject
这是行(如果不清楚):
包括directxmath.h。