是否可以创建和使用IDirect3DDevice9
的子类?我的代码这样做非常方便,但是我看到设备指针是作为IDirect3D9::CreateDevice()
的out参数给出的,我不能只告诉它创建我的子类的实例。 / p>
我希望能够这样做,以便当我希望使用具有扩展功能的设备的子类时,使用IDirect3DDevice9
的其他代码不必更改。具体来说,子类需要读取设备的渲染状态设置,并在实际绘制完成之前更新着色器变量以匹配IDirect3DDevice9::Draw()
的任何变体。同样,我不希望使用d3d设备的其他代码进行更改,因为我希望它能够使用常规设备或增强设备。
是否可以使用基类的实例创建子类的实例?如果是这样,是否会导致任何问题,如Direct3D未设置为使用子类实例,或内存中的多个设备实例,从而必须共享gfx卡资源等?或者我应该在没有使用子类的情况下想到另一种解决方法吗?
答案 0 :(得分:0)
我最终按照上面建议的ErikEsTT进行操作并创建一个包含IDirect3DDevice9指针的单独类,并提供了多余的功能。这不是我想要的解决方案,因为它不是一个无缝的接口 - 客户端代码仍然必须明确地调用一个单独的方法。但它确实有效。