0

是否可以创建和使用的子类IDirect3DDevice9?我的代码这样做会非常方便,但我看到设备指针作为 out 参数给出IDirect3D9::CreateDevice(),我不能只告诉它创建我的子类的实例。

我希望能够做到这一点,以便其他使用 an 的代码IDirect3DDevice9在我希望它使用具有扩展功能的设备的子类时不必更改。具体来说,子类需要IDirect3DDevice9::Draw()在实际绘制完成之前读取设备的渲染状态设置并更新着色器变量以匹配任何变体被调用。同样,我不想改变使用 d3d 设备的其他代码,因为我希望它能够使用常规设备或我的增强设备。

是否可以使用基类的实例创建子类的实例?如果是这样,是否会导致诸如 Direct3D 未设置为使用子类实例,或内存中有多个设备实例因此必须共享 gfx 卡资源等问题?或者我应该在不使用子类的情况下考虑另一种解决方法吗?

4

1 回答 1

0

我最终按照 ErikEsTT 上面的建议进行操作,并创建了一个包含 IDirect3DDevice9 指针并提供额外功能的单独类。这不是我想要的解决方案,因为它不是一个无缝接口——客户端代码仍然必须显式调用一个单独的方法。但它有效。

于 2012-10-14T16:25:18.253 回答