2

在 XNA 4.0 中,我的游戏类的 GraphicsDevice 属性和“graphics”变量的 GraphicsDevice 属性有什么区别?顺便说一句,“图形”的类型是 GraphicsDeviceManager。

如果这很重要,我正在使用 Visual Studio 2010。

4

2 回答 2

4

没有。自己试试:

Console.WriteLine(ReferenceEquals(graphics.GraphicsDevice, this.GraphicsDevice));

把它放在里面的某个地方LoadContent。你会发现它输出true. 它们都指向同一个对象。

为了可读性,您通常应该使用Game.GraphicsDevice.


基本行为是GraphicsDeviceManager一个IGraphicsDeviceService(提供一个GraphicsDevice成员)。当您创建GraphicsDeviceManager时,它会将自己添加到Game.Services其构造函数中(请参阅如何将引用传递给您Game的构造函数)。

Game从其列表中GraphicsDevice的任何成员中设置其成员。这样,您可以用自己的实现类替换- 如果您碰巧疯了;)IGraphicsDeviceServiceServicesGraphicsDeviceManagerIGraphicsDeviceService

GraphicsDeviceManager也是一个IGraphicsDeviceManager,它Game以类似的方式(通过Game.Services)使用来管理创建图形设备。

于 2012-11-25T15:09:11.873 回答
0

GraphicsDeviceManager 管理 GraphicsDevice,你不应该直接使用 GraphicsDevice。如果需要,可以更改它,而不是只使用 GraphicsDeviceManager.GraphicsDevice 属性。

于 2012-11-25T15:09:34.177 回答