Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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+有什么好处吗+;在使用Direct3D时是否使用C#? 使用Direct3D时,使用C++代替C语言有什么好处?我已经找到的C++教程和DirectX都使用Direct3D(我的知识是被管理的)。类似地,我找到的所有C#教程都是针对Direct3D的_C#_C++_Directx_Direct3d - Fatal编程技术网

使用C+有什么好处吗+;在使用Direct3D时是否使用C#? 使用Direct3D时,使用C++代替C语言有什么好处?我已经找到的C++教程和DirectX都使用Direct3D(我的知识是被管理的)。类似地,我找到的所有C#教程都是针对Direct3D的

使用C+有什么好处吗+;在使用Direct3D时是否使用C#? 使用Direct3D时,使用C++代替C语言有什么好处?我已经找到的C++教程和DirectX都使用Direct3D(我的知识是被管理的)。类似地,我找到的所有C#教程都是针对Direct3D的,c#,c++,directx,direct3d,C#,C++,Directx,Direct3d,是否管理Direct3D? 在这两种语言中使用D3D有什么区别吗?Direct3D的目的是将渲染从CPU移到GPU上。如果有一个显着的性能差异,这将是为该代码在CPU上运行。因此,对于与Direct3D接口的代码部分,我不认为本机代码和托管代码之间存在任何显著的性能差异 Direct3D本身不是托管代码。DirectX完全是本机代码。任何你认为它被管理的印象都是完全错误的。有一些托管包装器允许您从托管代码中使用DirectX。此外,DirectX被编程为从C++或C或类似语言访问。如果你看看Sl

是否管理Direct3D?
在这两种语言中使用D3D有什么区别吗?

Direct3D的目的是将渲染从CPU移到GPU上。如果有一个显着的性能差异,这将是为该代码在CPU上运行。因此,对于与Direct3D接口的代码部分,我不认为本机代码和托管代码之间存在任何显著的性能差异


Direct3D本身不是托管代码。

DirectX完全是本机代码。任何你认为它被管理的印象都是完全错误的。有一些托管包装器允许您从托管代码中使用DirectX。此外,DirectX被编程为从C++或C或类似语言访问。如果你看看SlimDX项目,他们会遇到很多问题,特别是在资源收集方面,因为C#并不真正支持自动收集非内存资源,而且
使用
也不能解决问题。此外,游戏编程可以是CPU密集型的,而且经常使用管理语言丢失的附加性能是不可维持的,并且实际上所有现有的支持库都是C或C++的。

如果你想做一个小游戏,或者类似的东西,没有什么能阻止你使用托管代码。然而,据我所知,没有任何商业游戏真正走这条路。

这取决于你到底在做什么。正如David Heffernan提到的,Direct3D的目标之一是将尽可能多的处理转移到GPU。随着顶点着色器、像素着色器等的出现,我们比以往任何时候都更接近这一现实

当然,给定无限的时间和资源,你通常可以在C++中创建比C语言更有效的算法。这将影响CPU级别的性能。今天,与图形无关的处理仍然主要在CPU上完成。有一些东西像CUDA、OpenCL,甚至是DirectX的未来版本,它们也将为将任何并行友好算法移动到GPU提供可能性。但这些技术(以及支持它的视频卡)的采用率目前还不完全是主流

那么,你应该考虑C++的哪些类型的CPU密集型算法?

  • 人工智能
  • 粒子引擎/n体模拟
  • 快速傅里叶变换

这些只是我能想到的第一件事。至少前两个在今天的游戏中很常见。在游戏中,人工智能通常以折衷的方式运行,以尽可能快的速度运行,这仅仅是因为它可能是处理器密集型的。然后粒子引擎无处不在。

速度?如果除了Direct3D为您提供的功能之外还有什么其他功能,那将是唯一的区别,really@sehe你确信C++会比C语言更好吗?我知道编译语言比解释语言快是“常识”,但我发现这更多的是我自己的“普遍误解”。@sehe,glowcoder这不是关于C#/C++语言是否更快/更好的争论。它是关于Direct3D如何运行在任何一个语言中,它在C++中运行的不同于C语言。你可能想看看这个线程:(是的,它看起来像MDX,如果你使用的是,管理的,至少理论上几乎与本地DirectX相媲美——据说,C++本身在某些情况下可能比C语言快得多)。优点是速度。C#/Java爱好者以生成合成基准和声称cpu计算中的奇偶性而臭名昭著。如果您的代码受cpu限制,则C++(或Fortran)/内联ASM是一条出路。当我参考Microsoft.DirectX时,Direct3D位于名为“DirectX for Managed code”的directoy中。是否有专门为非托管代码构建的另一个版本?如果有,区别是什么?@Kyle,这是DirectX的托管包装。非托管代码的版本是DirectX。Direct3D用于游戏以外的许多其他用途。我可以看到一些开发人员希望从.net应用程序.J使用Direct3D的许多原因ust需要澄清的是:DirectX和Direct3D是本机的?或者DirectX是本机的,但Direct3D是托管的?@Storm Direct3D是本机的。我相信所有的Direct都是,但不确定其他的。D3D和DInput肯定是。谢谢大家的回答和回答!@Storm Kierman:基本上没有DirectX了,除了t Direct3D-从DirectSound、DirectMusic到DirectInput的一切都消失了。最近,有了像DirectWrite、Direct2D这样的新lib,但它们是一个家族,并且都有相同的特征——用本机代码编写的COM。