|
本帖最后由 akima 于 2013-12-2 17:28 编辑
各位前辈,我希望写一个基于接口的个人代码库,但是我遇到一点问题,描述如下(伪代码) :
- // 图形接口, 用于图形文件-图形数据的渲染和维护
- class IImage
- {
- void render( ... );
- void createForRenderTarget( ... );
- };
- // 以 D3D9 实现的图形类
- class CD3D9Image : public IImage
- {
- // 没问题,D3D9 的确可以渲染一个 Image
- void render( ... );
- // 没问题,D3D9 支持渲染目标,Image 可以作为渲染目标
- void createForRenderTarget( ... );
- };
- // 以 OpenGL 实现的图形类
- class COpenGLImage : public IImage
- {
- // 没问题,OpenGL 的确可以渲染一个 Image
- void render( ... );
- // 没问题,OpenGL 支持渲染目标,Image 可以作为渲染目标
- void createForRenderTarget( ... );
- };
- // 以 GDI 实现的图形类
- class CGDIImage : public IImage
- {
- // 没问题,GDI 的确可以渲染一个 Image
- void render( ... );
- // 问题来了 ... GDI 不支持 Image 作为渲染目标,这个方法我无法实现 ...
- void createForRenderTarget( ... );
- };
复制代码
如上,是一个图形接口,用来维护图形数据,进行渲染和一些基本操作,我希望用户只是用 IImage 接口,而避免用户接触到内部细节,很明显,一个 Image 基本上都可以作为一个渲染目标而创建的,这对于 D3D 和 OpenGL 应该没问题,可是作为 GDI 的话,可能就会出现问题了,因为 GDI 不支持渲染目标,这样一来,接口不就出现问题了 ?
我应该怎样处理上面问题呢 ?
|
|