Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在XNA4.0的3d世界中渲染动画纹理2D_Xna_Texture2d - Fatal编程技术网

如何在XNA4.0的3d世界中渲染动画纹理2D

如何在XNA4.0的3d世界中渲染动画纹理2D,xna,texture2d,Xna,Texture2d,到目前为止,我已经学习了两种在xna中绘制的方法;使用spritebatch或将项目放置到3d世界上,然后使用摄影机进行渲染 目前,我正在开发我的2.5D游戏。我使用了一种机制,使更深的精灵转换得更慢,所以看起来游戏中有真正的深度 但是,考虑到效果(即后处理),如果我想将这些效果渲染到中等深度,即渲染到深度为0.5的角色上,而在深度为0.8的角色上有前景树,则可能会出现一些问题 因此,我正在考虑在真实的3D世界中渲染我的游戏 然而,由于我一直在寻找在3d世界中放置我的精灵并为其设置动画的方法,我

到目前为止,我已经学习了两种在xna中绘制的方法;使用spritebatch或将项目放置到3d世界上,然后使用摄影机进行渲染

目前,我正在开发我的2.5D游戏。我使用了一种机制,使更深的精灵转换得更慢,所以看起来游戏中有真正的深度

但是,考虑到效果(即后处理),如果我想将这些效果渲染到中等深度,即渲染到深度为0.5的角色上,而在深度为0.8的角色上有前景树,则可能会出现一些问题

因此,我正在考虑在真实的3D世界中渲染我的游戏

然而,由于我一直在寻找在3d世界中放置我的精灵并为其设置动画的方法,我还没有找到。(可能是因为我不知道正确的关键字。)我找到的最接近的主题是关于PointSprite的,它现在已从XNA4.0中删除,因此我无法以这种方式实现它

我的问题是,如何在3D世界中渲染动画精灵(即角色移动)

谢谢,
Dome

诀窍是准确地描述到目前为止您一直在做的事情,而不是使用spritebatch“直接”在屏幕上绘制,而是将2d图像绘制到3d世界中的平面“图纸”上(每个“图纸”由两个三角形组成,形成一个正方形)


我建议在create.msdn.com网站上查看用于构建四边形、纹理和可能的渲染目标的示例作为起点。

在XNA 4.0中新增,SpriteBatch可与BasicEffect一起使用

。它还提供了一些示例代码,通过BasicFect模拟默认的SpriteBatch功能,但是您可以为3D世界传递自己的矩阵

特别是:您的“世界”矩阵将描述绘制精灵的平面在三维空间中的位置。“视图”矩阵将描述您相机的世界视图。“项目”矩阵将是一个3D投影矩阵(可能来自
matrix.CreatePerspective

顺便说一下,您描述的效果的名称是“视差滚动”。它与真实3D不同(2.5D也不同)

如果您只想将效果应用于场景中的某些层:您可以通过将带有像素着色器的效果传递给SpriteBatch.Begin,直接将效果应用于这些精灵。或者,如果效果确实是后期处理效果(即:应用于整个屏幕),则可以使用渲染目标在屏幕外渲染该特定层,然后使用效果将其渲染回屏幕