DirectX11.0中的Sprite Sheet动画

时间:2015-02-02 06:07:11

标签: animation directx-11 sprite-sheet

最近,我开始构建二维渲染引擎'排序依据:http://www.rastertek.com/dx11tut11.html,但转换为使用DirectX11.0。

这个'引擎'是建立一个小型2-D游戏作为个人项目,以更熟悉原始API - 意味着 没有 http://directxtk.codeplex.com/之外的库之外。

我的问题在于渲染Sprite Sheet Animations。

由于我已经使用动态顶点缓冲区来重新定位我的图像,所以我没有看到在顶点着色器中进行变换的必要性,详见此处:https://gamedev.stackexchange.com/questions/28287/how-to-set-sprite-source-coordinates。< / p>

所以我选择了这个解决方案:

for (size_t i = 0; i < 6; i++)
{   //having not yet overloaded the operators, I have to be a barbarian.

    vertices[i].texture.x *= offset;
    vertices[i].texture.y *= offset;

    vertices[i].texture.x += offset * (tile % tiles_x);
    vertices[i].texture.y += offset * floorf(tile / tiles_x);

}

其中tile是要呈现的当前磁贴,而tiles_x是横向位图上的数字

编辑:offset计算为1.0f / tiles_x

我认为这个问题是因为我的精灵表格显然不是正方形。

我的问题是:如何仅使用D3D11 API,我是否可以简单地绘制动画纹理的一部分?

为什么只是纹理的一部分?

我从一个.xml文件加载工作表,该文件包含各个动画帧的各种渲染矩形(锚点动画)。

更换渲染矩形应该达到我之后的目标。

除了Sprite Animation之外,它还可以应用于非常大的背景,其中只有视图中的部分实际被绘制。

0 个答案:

没有答案