游戏开发论坛

 找回密码
 立即注册
搜索
楼主: akima

请问我应该如何设计我的代码接口

[复制链接]

5

主题

84

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2013-12-3 00:37:44 | 显示全部楼层
sea_bug 发表于 2013-12-3 00:34
我以前的HOHO引擎是有开源,里面也有一部分用到了抽象接口,目的为了实现用3D硬件渲染2D图片,另外一种是支 ...

原来如此,有一点点头绪了,不过咱们能一起翻一翻这份代码么 ?
只有我自己读的话,搞不好会看不懂个呢,毕竟我没有接触过 HOHO 引擎

5

主题

84

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2013-12-3 00:41:41 | 显示全部楼层
sea_bug 发表于 2013-12-3 00:34
我以前的HOHO引擎是有开源,里面也有一部分用到了抽象接口,目的为了实现用3D硬件渲染2D图片,另外一种是支 ...

前辈,好困,我先去睡了,明天咱们继续讨论哈

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2013-12-3 00:42:54 | 显示全部楼层
图形函数我基本上忘记得差不多了,也没精力去查msdn了,

我就根据你的文件类模拟下我的思路。

class CFile
{
virtual void open( name, zipfile=NULL );
virtual void write( buff );virtual void close();
}

class CDiskFile: public CFile
{
void open( name, zipfile=NULL ) { 调用windows api打开磁碟文件;}
void write( buff ) { 调用windows api写入文件数据;}
void close( ) { 关闭文件;}
}
class CZipFIle: public CFile
{
    void open( name, zipfile=NULL )
    {
        if( zipfile != NULL )
            { 调用ziplib打开zip文件;打开zip里面的name文件; }
    }

void write( buff ) { 调用ziplib写入操作;}
void close( ) {调用ziplib关闭文件;}
}

看能不能表达清楚我的意思。

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2013-12-3 00:43:08 | 显示全部楼层
akima 发表于 2013-12-3 00:41
前辈,好困,我先去睡了,明天咱们继续讨论哈

ok,晚安!

1

主题

18

帖子

4834

积分

论坛元老

Rank: 8Rank: 8

积分
4834
发表于 2013-12-3 09:42:59 | 显示全部楼层
akima 发表于 2013-12-3 00:06
sea_bug 前辈,我再举一个例子吧,这样子的问题我发现自己遇到好多了:

// 文件接口

不支持的操作可以直接抛出一个异常,使用者会知道这个类不支持这种操作。。。

5

主题

84

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2013-12-3 11:54:17 | 显示全部楼层
rock.tsai 发表于 2013-12-3 09:42
不支持的操作可以直接抛出一个异常,使用者会知道这个类不支持这种操作。。。 ...

我想到一个新的方法了,不过抛出异常不好吧 ... 毕竟是游戏程序 ...

5

主题

84

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2013-12-3 11:56:17 | 显示全部楼层
sea_bug 发表于 2013-12-3 00:42
图形函数我基本上忘记得差不多了,也没精力去查msdn了,

我就根据你的文件类模拟下我的思路。

前辈你这里不妥,CZipFile:pen( ) 方法本来就是用来打开 Zip 文件的,这是所有人都知道的事情,多加一个 zipfile 参数,其实是多余的

5

主题

263

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
发表于 2013-12-7 18:04:25 | 显示全部楼层
如果说要renderForTarget,那么也应该是frameBufferObject而不是image。

5

主题

84

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2013-12-7 20:50:50 | 显示全部楼层
jiangcaiyang 发表于 2013-12-7 18:04
如果说要renderForTarget,那么也应该是frameBufferObject而不是image。

前辈你的意思是 ??

5

主题

263

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
发表于 2013-12-8 13:24:12 | 显示全部楼层
akima 发表于 2013-12-7 20:50
前辈你的意思是 ??

上次讲对了一半。如果渲染目标那么还可能是纹理。
你应该定义一个类ITexture,它的子类Texture2D继承IRenderTarget,它支持重载IRenderTarget接口的renderForTarget方法。同时Texture2D有这样一个方法:Texture2D::fromImage( IImage* pImage );。这样设计就巧了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-26 05:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表