Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
C# XNA vs SlimDX用于屏幕外渲染器_C#_.net_3d_Xna_Slimdx - Fatal编程技术网

C# XNA vs SlimDX用于屏幕外渲染器

C# XNA vs SlimDX用于屏幕外渲染器,c#,.net,3d,xna,slimdx,C#,.net,3d,Xna,Slimdx,我意识到在这里有很多关于选择XNA和SlimDX的问题,但这些都与游戏编程有关 一点背景知识:我有一个应用程序,可以根据XML描述渲染场景。目前我正在使用WPF 3D,这主要是可行的,除了WPF无法在屏幕外渲染场景(即在服务器上,不在窗口中显示场景),而且渲染到位图会导致WPF退回到软件渲染 因此,我不得不编写自己的渲染器。以下是要求: 3D和2D元素的混合 每个场景相对较少的元素(数十个网格,数十个2D元素) 大场景(打印最高可达3000px正方形) 仅渲染单个帧(即FPS不是问题) 不透明

我意识到在这里有很多关于选择XNA和SlimDX的问题,但这些都与游戏编程有关

一点背景知识:我有一个应用程序,可以根据XML描述渲染场景。目前我正在使用WPF 3D,这主要是可行的,除了WPF无法在屏幕外渲染场景(即在服务器上,不在窗口中显示场景),而且渲染到位图会导致WPF退回到软件渲染

因此,我不得不编写自己的渲染器。以下是要求:

  • 3D和2D元素的混合
  • 每个场景相对较少的元素(数十个网格,数十个2D元素)
  • 大场景(打印最高可达3000px正方形)
  • 仅渲染单个帧(即FPS不是问题)
  • 不透明遮罩
  • 像素着色器
  • 软件后备(服务器可能有也可能没有像样的gfx卡)
  • 被渲染到屏幕外的可能性
正如您所看到的,这是非常简单的东西,WPF可以很好地管理它,除了无法导出场景问题


特别是我不需要游戏开发中通常需要的很多东西。记住这一点,您会选择XNA还是SlimDX?代码的非渲染部分已经用C#编写,因此希望继续使用。

我没有使用SlimDX,但基于我使用XNA的经验和对SlimDX目标的了解。我建议用SlimDX。XNA虽然可以用于其他方面,但它主要是一个游戏引擎,而不是渲染引擎。它有很多针对游戏的特定优化和方法


此外,XNA喜欢将其资源预构建到DirectX文件(.x)中。如果您使用的是动态文件,我认为SlimDX是您的最佳选择。

XNA和SlimDX本质上非常接近,但有一些区别:

  • XNA需要一个具有最少像素/顶点着色器1.1的GPU,而我认为SlimDX不需要

  • SlimDX支持DirectX10和11,而XNA仅支持DirectX 9

  • XNA是Windows、Xbox 360、Zune和Windows Phone 7之间的跨平台,而SlimDX则不是

  • XNA拥有一个强大的社区(creators.XNA.com),拥有大量的教程和帮助材料


我会选择XNA。

你说得对,我担心SlimDX的级别太低(虽然级别很低,但也没什么问题),但我在几天内就成功地编写了一个可用的渲染器,甚至之前从未做过任何Direct3D编程。只是一个小小的吹毛求疵:XNA框架,顾名思义,是一个游戏框架,而不是引擎。然而,它比SlimDX更高一点,专注于游戏创作。