2013-04-07 55 views
0

DirectX 9/C++声明d3ddevice全局或传入需要它的类?

您是否将d3ddevice全局声明为整个应用程序/游戏,还是传递给需要d3ddevice的类?

常用的方法是什么?

我的理解(这可能是错误的),如果你在全球范围宣布了,所有的类和函数将通过编译后声明的类内的全局变量头记忆负担?

我能具体谈谈我的问题我的应用程序,但是,我只是在寻找的典型方式。

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

+0

它是一种恼人的努力让事情当地与Direct3D的,但我发现,如果你包你用什么了,你走的问题变得更加容易。将设备存储在一个类中允许所有成员无需使用它,所有成员都应该是相关的,因此它非常适合。 – chris 2013-04-07 21:55:26

+0

你能举个简单的例子来说明你的意思吗?你的意思是说你有一个可以处理所有绘图的direct3d类吗?或者你是否像一个肮脏的妓女那样通过一个d3ddevice? – Jimmyt1988 2013-04-07 22:01:36

+0

当我开始通过再下去,我创建了有一对夫妇轻微定制预设窗口,一个'Direct3D9'类来处理接口,一个'Direct3DDevice9'类为该接口,一个'Scene'类小'Window'类为我的渲染,和其他事情。每个都负责初始化和销毁​​,并且每个包装该接口的函数以删除未使用的参数,并使其更加现代化。 – chris 2013-04-08 00:01:49

回答

1

我建议你在类内包装的一切,从不把任何东西在全球,因为全局变量可以在任何地方进行访问,并且可以使它很难跟踪变量和谁,也没有使用它。

+0

好吧,这是一个非常典型的事情,游戏程序员会实例化一个directxdevice和对象里面让我们说一个游戏类,然后将该设备传递给敌人类和玩家类来绘制它们?或者他们是否有一个direct3d类具有非常通用的绘图功能,然后从外部的敌人类或玩家类中调用它们,例如? – Jimmyt1988 2013-04-07 22:00:19

+0

@JamesT我会这么做的方式是创建一个DirectX类,该类知道如何初始化它,并知道如何根据传入的参数绘制事物。而不是创建一个玩家类,当涉及到绘制它时,您会传入参数给DirectX(像pos,Shader文件,纹理文件)类,告诉它应该如何绘制对象。这样它会将你的游戏逻辑从你的绘图逻辑中分离出来。 – Caesar 2013-04-07 22:06:32

+0

谢谢你。这对我来说完全有意义。你是圣人 – Jimmyt1988 2013-04-07 22:08:07