gpt4 book ai didi

c# - XNA : How to use double value within Draw() method instead of float to get precise rotation?

转载 作者:行者123 更新时间:2023-11-30 16:02:39 26 4
gpt4 key购买 nike

我想根据通过切线计算的特定角度向目标绘制一条定向线,这将给出弧度结果。

据我所知,为了获得精确的旋转,我必须使用 double 值来表达正确的弧度。然而,Spritebatch.Draw需要一个 float 值作为旋转:

public void Draw (
Texture2D texture,
Vector2 position,
Nullable<Rectangle> sourceRectangle,
Color color,
**float rotation,**
Vector2 origin,
float scale,
SpriteEffects effects,
float layerDepth
)

如果我将 double 值转换为 float,角度不正确,它将错过我期望相交的目标。

我如何根据我的 double 而不是 float 绘制正确的方向线?

最好的情况可能是跟踪 Update() 中的线而不是 Draw() 但我认为我没有足够的经验来实现这一点像 Vector2.Transform() 这样的东西,因为我无法想象它会做什么,也找不到合适的面向新手的解释。

最佳答案

我认为您无法获得比这更精确的信息。您正在使用 XNA,这意味着您无法使用 XNA 的 API。 Draw 没有重载需要一个 double 的重载。只是 float

无论如何,显卡对 double 的支持不是很好。考虑这个链接:https://msdn.microsoft.com/en-us/library/windows/desktop/bb509646%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

这讨论了 HLSL 可以支持的不同标量类型。它确实将 double 列为一个选项,但它指出

You cannot use double precision values as inputs and outputs for a stream.

XNA 实际上是 DirectX 的一个相当薄的包装器,所以我不希望它在 double 方面支持太多。事实上,我很难想到任何使用double 的游戏框架。 WPF 是我能想到的最接近的框架,它是一个 UI 框架,而不是游戏开发框架。

就视频游戏而言,float 对您正在做的事情来说不够精确的情况很少见。我怀疑有一个单独的、真正的 bug 阻止你获得足够准确的东西(即使 double 也不能拯救你),或者你可以采取完全不同的方法来让你围绕着它。

我知道您已经想到了这一点,但如果精度真的是这里唯一的问题,您可以提前单独进行数学运算,然后在将其传递给 时将其转换为 float 绘制调用。

关于c# - XNA : How to use double value within Draw() method instead of float to get precise rotation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37402513/

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