【发布时间】:2011-02-16 04:24:53
【问题描述】:
我将开始使用 DirectX SDK 在非托管 C++ 中编写 3D 游戏。它会涉及很多物理和数学,尽管我无法预测它会有多复杂(例如,我不知道我是否会并行化它)。我在想,由于 F# 的 incredibly awesome units of measure feature,以及它的功能性并因此很好地并行化的事实,我可以编写一个 F# 库来进行游戏的数学密集型计算。但是:
- 我对 C++ 缺乏经验,更不用说将它与托管代码接口。我不知道这会有多累人。
- 我不知道对于每个数学密集型计算而言,进出托管 DLL 的速度会有多大(每次游戏迭代至少需要运行一个物理方程) .
- 我不确定度量单位的增益和简单的并行化是否值得。我的意思是,如果它只是数学,无论如何它必须很容易在 C++ 中进行线程化(实际上并没有任何副作用,如果我记得 C++ 中有一个
pure关键字可能不允许副作用或其他什么?) - 我如果我真的很小心的话,假设我可以不用度量单位(我知道我只会使用公制单位)。
那么值得吗?混合托管和非托管代码是一种常见的做法吗?游戏呢?会不会是瓶颈?它会让我的绘图代码变得可怕和令人费解吗?如果你打开一个 VC++ 项目并看到这种情况——你的脸会是什么样子(:):(D: 等)
【问题讨论】:
-
您使用非托管 C++ 有什么特别的原因吗?
-
二:1,我能找到的大多数适合初学者的教程都是用C++编写的,2,这是我明年在大学课程中使用的,所以很好带着一点经验进去
-
虽然这对第 2 点没有帮助,但您可能对第 1 点的这个问题感兴趣:Comparison between XNA and DirectX (C#)。有很多关于使用 XNA 的教程,它可以让您在托管代码领域进行游戏。
-
c++ 中没有纯关键字。有一个纯虚拟的概念(由一个虚函数声明,后面有一个 = 0)表示你不能实例化类的实例,派生类必须重写这个函数。