gpt4 book ai didi

c# - CPU 上的 XNA 插值?

转载 作者:太空狗 更新时间:2023-10-30 00:56:44 25 4
gpt4 key购买 nike

CPU 插值

我希望能够在 CPU 上进行插值。

考虑以下示例:

X1 | X2

--------

X3 | X4

X1、X2、X3 和 X4 都是像素(Vector4 格式)。它们都有以下坐标。

  • X1: {X: 0, Y: 0}
  • X2: {X: 1, Y: 0}
  • X3: {X: 0, Y: 1}
  • X4:{X:1,Y:1}

现在,我希望能够在给定 Vector2 的像素之间进行插值。

假设我想要坐标 {X: 0.348, Y: 0.129} 的颜色。

我如何在像素之间正确插值?

我为什么要这样做

我知道这听起来很疯狂,但这是我想做的。我正在尝试在 CPU 上模拟 GPU 着色器算法。它用于 Perlin 噪声发生器。我已经在游戏中以这种方式通过像素着色器生成了 2D 地形,我希望能够(在给定的 X、Y 和 Z 坐标下)使用确切的方法检查那里是否存在墙CPU 上的相同算法。

如果您想了解更多关于我正在尝试做的事情,请参阅这个问题:https://gamedev.stackexchange.com/questions/15667/perlin-noise-copying-the-algorithm-on-the-cpu

编辑

我发错地方了。它应该在“gamedev.stackexchange.com”中。无论如何,我希望你有答案。

最佳答案

您正在寻找的是双线性插值 ( Wikipedia )。

XNA Lerp 函数执行线性插值 - 即:一个轴。双线性在两个轴上。幸运的是,这只是在一个轴上进行线性插值(两次:该轴上每对输入一次),然后对两个结果进行线性插值。

所以你会做这样的事情:

Vector2 position = new Vector2(0.348f, 0.129f); // <- example data from question

Vector4 result = Vector4.Lerp(Vector4.Lerp(X1, X2, position.X),
Vector4.Lerp(X3, X4, position.X),
position.Y);

关于c# - CPU 上的 XNA 插值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6972652/

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