问题标签 [xna-math-library]
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# - 与角度物体碰撞
我正在为激光束(球精灵)开发一面镜子。在那里,我试图根据镜子(矩形)的配给度来重定向延迟光束。如果碰撞物体以某个角度(45 度)而不是向后碰撞,我如何将球碰撞到正确的角度。
这是我工作的屏幕截图
这是我的代码:
c++ - binary '-' : 'DirectX::XMVECTOR' 没有定义这个运算符或转换(从 xnamath 迁移到 DirectXMath 不是那么容易)
我有一些使用xnamath.h
. 我想迁移到“全新” DirectXMath
,所以我改变了:
至
我还添加了DirectX
命名空间,例如:
我已经准备好迎接麻烦了,他们来了!
在编译过程中,我得到了错误:
对于工作正常的线路xnamth.h
:
我真的不知道如何解决它。我认为operator-
不再“不支持”了,但是什么会导致该错误以及如何解决?
这是更复杂的源代码:
我正在使用Windows 7 x64,项目目标是 x32 调试,xnamath.h
到目前为止它运行良好。
可行的解决方案是:
但与以前相比,它太令人毛骨悚然了,为xnamath
:
我真的不相信这是唯一的方法,我不能operator-
像上面那样使用。
我也有完全相同的问题operator/
。
c++ - 头文件中基于 DirectX 的结构
我对 c++ 比较陌生,我正在尝试创建一个可从多个 c++ 文件访问的结构。为此,我将其写入头文件。但是,该结构需要来自 DirectX 库的标识符,即“xnamath.h”。
我的结构如下
我曾尝试在我的 resource.h 头文件中包含 xnamath 头文件,但这导致比当前问题更多的错误。据我所知,所有文件都需要该结构,因此不能在每个 .cpp 文件中重新定义该结构。
任何帮助将不胜感激,谢谢大家!
c# - SharpDX 中是否有相当于 XNA Math 的功能?
我买了这本书“DirectX 11 3D 编程简介”,希望我可以使用 SharpDX 将所有内容移植到 C#,因为我不懂 C++。好吧,我似乎找不到 SharpDX 的 XNA Math 包装类,而这本书广泛涉及该库。还有什么我可以得到的吗,我可以下载一些 XNA Math C# 包装器,这样我就可以继续学习了?
animation - Directx X 11 中的 MD5 3D 模型和动画。正常旋转以更新模型导致 1.#QNAN00
我尝试将 MD5ANIM 和 MD5Mesh 文件(Doom 中的 3d 动画和模型格式)中的动画加载到我的 DX 11 延迟渲染器中。
一切正常,除了我必须使用 XNA Math 更新动画的模型顶点位置和法线。以下代码计算旋转法线的结果始终为 -1。#QNAN00 并且模型显示为完全黑色。除此之外,位置的计算工作正常,您可以看到动画正常运行,没有法线完全黑色。
计算开始时的值是:
浮动 tempWeight.bias = 1.0000000
XMFLOAT3 旋转点 x=-0.022973990 y=-0.053293169 z=-0.10924719
XMFLOAT3 tempVert.normal = x=0.00000000 y=0.00000000 z=0.00000000
我不得不提到我在 for 循环中计算了值。在循环之后,我存储这样的值:
干杯马克斯
c# - 使用 Kinect 的 DrawBone 角度变量
当我们想将骨骼绘制到 XNA 中时(使用 KnectSDK 和 C#),您必须计算两个关节之间的差异并在它们之间绘制骨骼。这是绘制骨骼的函数:
我只是想了解计算角度的方式以及角度公式的工作原理
谢谢
c++ - 这是数据对齐崩溃吗?(可能涉及堆栈错位,XNAMath,Visual Studio 2103)
我的 Win32,DirectX 游戏在操作向量和矩阵的代码中以发布模式崩溃。具体来说,崩溃发生在这条指令上:
014E2752 unpcklps xmm1,xmmword ptr [esp+3Ch]
RodinaRelease.exe 中 0x014E2752 处的第一次机会异常:0xC0000005:访问冲突读取位置 0xFFFFFFFF
我在深入研究汇编和寄存器方面没有太多经验,但似乎esp = 0x0043f31c
这会使esp+3Ch = 0x0043f358
现在,根据this和this,该unpcklps
指令是一条 SSE 指令,需要对齐 16 个字节。0x0043f358
不是 16 字节对齐的,对吗?我认为堆栈的对齐是导致我崩溃的原因是否正确?
如果是这样,我做了什么应得的????我没有在我的游戏中使用 SSE 指令,所以我可以忽略这样的对齐问题 - 这是幼稚/错误的吗?有什么办法可以关闭这种行为?
相关点:
我最近升级到 Visual Studio 2013,我怀疑这个错误是在这个时候出现的。我发现了一个与我的问题类似的错误报告。
我的游戏使用 XNAMath,特别是 XMMATRIX 和 XMVECTOR。通常这需要我对齐所有内容。但是,因为我不想遇到这样的问题,所以我使用 _XM_NO_INTRINSICS_ 标志进行编译,该标志应该关闭 XNAMath 对 SIMD 指令的使用。直到现在,这似乎从来都不是问题。我正在处理的具体崩溃是我自己的向量类型,但它与 XMMATRIX 代码足够接近,我相信它们都是通过优化混合在一起的。
我的游戏是作为 Win32 应用程序构建的。切换到 x64 是一个可行的解决方案,或者这会是荒谬的矫枉过正吗?除了需要获得我使用的 64 位版本的库之外,我不知道会产生什么后果。
xna - DX11 中的不可见几何体
在努力理解和弥补微软在 Windows 8 中弃用 D3DX 的许多小时之后,我遇到了一个我无法摆脱的问题。
我第一次启动我的程序时,由于访问冲突,它变得不朽。重新启动计算机并重新编译并运行相同的代码后,它不会崩溃,但我应该看到的立方体不存在。
我还收到警告说“在堆上声明的对象可能未对齐 16”。根据我的研究,这通常是由于 XNA Math 而发生的。因此,在找到这个讨论之后,我几乎尝试了所有建议的内容。除了 XMFLOAT4X4 解决方案之外的一切都有效,但我的立方体仍然不可见。这是我认为相关的代码部分:
更新:所以,在启用 D3D 调试设备后,我在输出中得到了这个。我实在想不通。
更新:我的 XMMATRIXs 现在正确对齐。立方体仍然是不可见的。我也找不到 Visual Studio 图形调试器。根据我的研究,我知道它应该在哪里,它只是不存在。
c++ - XMVECTOR 类型的函数参数传递
为什么 FXMVECTOR 的定义在 32 位和 64 位上不同?为什么不应该在 32 位上通过引用传递 XMVECTOR 来使用 SIMD 的荣耀?
先感谢您!
math - 绘制 4 维和 3 维数据 - matlab
我有数据集以以下维度绘制。
- 密度
- 可访问性
- 土地利用组合
- 活力
帮我完成任务的步骤。
预期输出将是