DirectX 9 / C++
您是否将 d3ddevice 声明为对您的整个应用程序/游戏全局,或者您是否传递到需要 d3ddevice 的类?
通常的方法是什么?
我理解(这可能是错误的),如果您全局声明它,所有类和函数都将被头内存所负担,该头内存在编译后在类中声明该全局变量?
我可以更具体地说明我的申请问题,但是,我只是在寻找典型的方式。
我知道如何启动 d3ddevice 等,这只是一个关于什么是最好的问题?
我建议您将所有内容包装在一个类中,并且永远不要将任何内容放在全局中,因为可以从任何地方访问全局变量,这使得跟踪变量以及谁在使用和不使用它变得非常困难。
在这里聚会有点晚了,但我最近也偶然发现了同样的设计问题。让我有点惊讶的是,互联网上没有更多关于它的讨论。我什至尝试仔细阅读随机的 github 库,看看我是否可以收集其他人是如何做到的。没找到太多。我还有一个示例,说明您何时无法将 d3d 设备声明为全局/静态对象。对于我的游戏/引擎,我有一个 dll 作为我的引擎框架。这个 dll 被编辑器和游戏客户端(人们用来玩我的游戏)使用。这允许两个事物(以及未来的其他应用程序,如果需要)访问所有世界对象、数学代码、集合等。
使用那个系统,我想不出一种方法来使 Device 对象静态化,并且仍然在编辑器和客户端中使用它。如果这只是一个游戏客户端,或者只是一个编辑器,那当然是可能的。相反,我几乎决定硬着头皮将 Device 传递给任何需要它的地方。一个例子是在运行时生成顶点的类。我需要一个指向 Device 的指针来重建类。
我真的只是想把这个贴在这里,因为我整天都在想它,而且这似乎是处理它的最佳方式。是的,必须将设备传递给几乎所有东西,这很糟糕。但是你真的无能为力。