声明d3ddevice全局或传递到需要它的类?

时间:2013-04-07 21:53:17

标签: c++ scope directx-9

DirectX 9 / C ++

您是否将d3ddevice全局声明为整个应用程序/游戏,或者您是否已进入需要d3ddevice的类?

通常的方式是什么?

我理解它(这可能是错误的)如果你全局声明它,所有类和函数都将由头内存负担,它在编译后在类中声明了全局变量?

我可以更具体地说明我的问题,但是,我只是寻找典型的方法。

我知道如何启动d3ddevice等,这只是一个关于什么是最好的问题?

2 个答案:

答案 0 :(得分:1)

我建议你把一切都包装在一个类中,永远不要把任何东西放在全局中,因为可以从任何地方访问全局变量,这样就很难跟踪变量以及谁是和不使用它。 / p>

答案 1 :(得分:0)

这里的聚会有点晚了,但我最近也偶然发现了同样的设计问题。互联网上没有更多关于它的讨论,这让我感到有些惊讶。我什至尝试仔细阅读随机的 github 库,看看我是否可以收集其他人是如何做到的。没找到太多。我还有一个示例,说明何时不能将 d3d 设备声明为全局/静态对象。对于我的游戏/引擎,我有一个 dll 作为我的引擎框架。这个 dll 由编辑器和游戏客户端(人们将用来玩我的游戏)使用。这允许两个事物(以及未来的其他应用程序,如果需要)访问所有世界对象、数学代码、集合等。

使用那个系统,我想不出一种方法可以让 Device 对象静态化,并且仍然在编辑器和客户端中使用它。如果这只是一个游戏客户端,或者只是一个编辑器,那么当然,这是可能的。相反,我几乎决定硬着头皮将 Device 传递给任何需要它的人。一个例子是在运行时生成顶点的类。我需要一个指向 Device 的指针来重建类。

我真的只是想在这里发布这个,因为我一天中的大部分时间都在考虑这个问题,而且这似乎是处理它的最佳方式。是的,必须将设备传递给几乎所有东西,这很糟糕。但实际上你无能为力。