最近,我开始构建二维渲染引擎'排序依据:http://www.rastertek.com/dx11tut11.html,但转换为使用DirectX11.0。
这个'引擎'是建立一个小型2-D游戏作为个人项目,以更熟悉原始API - 意味着 没有 在http://directxtk.codeplex.com/之外的库之外。
由于我已经使用动态顶点缓冲区来重新定位我的图像,所以我没有看到在顶点着色器中进行变换的必要性,详见此处: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
我认为这个问题是因为我的精灵表格显然不是正方形。
为什么只是纹理的一部分?
我从一个.xml文件加载工作表,该文件包含各个动画帧的各种渲染矩形(锚点动画)。
更换渲染矩形应该达到我之后的目标。
除了Sprite Animation之外,它还可以应用于非常大的背景,其中只有视图中的部分实际被绘制。