HGE核心绘图解决方案
摘要:在【【HGE】绘图底层】这个帖子里面有些地方需要更正。 为了不误导别人,这里有必要补充一下: HGE每次绘图都需要锁定一次缓冲区,只适合绘制大量相同的图片,如果是各种不同的图片,问题就出来了。如果绘制一百张图片就需要锁定和解锁各一百次。了解D3DAPI编程的人明白这是个什么问题。所以现有的HGE绘图算法是完全不适合大型游戏的。 有些人看到HGE自带例子中绘制2000个sprite FPS达200-300以上就以为是正确的,不要忘记绘制的图片都是同一张图片。这个问题是网上一位朋友首先发现的。 这里给出解决方案: 首先删除HGE原有的渲染函数,一个都不要留。 然后制作出一个添加数据...
阅读全文
posted @
2012-03-19 21:07
一笑如风
阅读(3917)
推荐(0) 编辑
优化HGE绘图算法成功了
摘要:HGE的核心绘图算法真是问题多多 大家有没有发现HGE绘图的时候是很有问题的。 每画一张图片,就需要从系统内存复制一次数据,最关键的不是数据复制的问题,而是每一次都需要LOCK锁定一次顶点缓冲区进行数据更新。锁定的时候不使用任何标记,那么就强制GPU和CPU同步,带来的是渲染延迟问题。 最要命的是每一帧都进行从系统内存——显卡内存的操作,如果是网络游戏,每一帧都画上千张以上的图片和阿尔法混合,结果会出现什么??本来顶点缓冲区里面既然已经存在数据,那么在几帧之内,如果数据是不需要更新,就完全可以直接从顶点缓冲区里面读取数据进行绘图。那么这些是GPU的事情,而CPU只是做了很短时间的操作...
阅读全文
posted @
2012-03-13 22:02
一笑如风
阅读(3464)
推荐(0) 编辑
HGE——重新编写HGESprite接口和字体接口
摘要:重新编写了HGESprite部分,不再使用HGESprite单元。 另外编写了一个HGECanvas单元,当然不是那个火人论坛上面的那个HGE加强版的那个。 参考ID3DSprite接口的做法,使用一个接口对象,就可以批量绘制所有的图元。 不需要创建多个接口对象。同时添加了纹理列表来管理显卡内存里面的纹理指针。 完全按照网络游戏的做法,加载完成硬盘自定义格式资源文件包后,产生所需要的显卡内存纹理对象,就可以释放系统内存,使系统内存占用相当低。 开始绘图的时候就由显卡内存读取,由GPU来进行绘制。这样使CPU和系统内存资源极大地解放了。 D3D编程最爽的地方是不需要经常从系统硬盘...
阅读全文
posted @
2012-03-07 00:01
一笑如风
阅读(3134)
推荐(0) 编辑
HGE继续修改绘图底层
摘要:HGE的基于帧回调的机制,而且还是基于Windows消息的回调机制,了解Windows消息的人应该明白,这样肯定不行。因为Windows消息有阻塞的情况存在等等问题。 测试了一下,当HGE窗口显示的时候,图片绘制还是很明显看出来绘制的过程,闪了一下才绘制上去。当拖动窗口的时候,痕迹的清除也很缓慢。 简简单单绘制一张图片,CPU占用达45%以上,跟我采用基于Main入口函数直接绘制完全不是一回事。看来还得继续改造这部分结构。 另外当时改造HGE的时候,发生了窗口无法注册的问题,这个时候才明白delphi的uses部分的单元文件是从左到右检测编译的,因为当时的情况是这样的:uses ...
阅读全文
posted @
2012-03-02 13:57
一笑如风
阅读(1367)
推荐(0) 编辑
HGE DirectX9.0C版本修改已经完成,发图祝贺一下。
摘要:完全DirectX9.0C改造,并且修改了资源载入部分。完成的效果如下图: 图片格式是:png,当然完全可以加载任何DirectX9支持的图片格式。而且资源文件也不需要特地指定封包为那种格式的图片文件。 网上也有HGEDx9的单元文件,这个文件挺搞笑的。RHW常量格式和灵活的顶点格式是不能够共存的,而且HGE在初始化设备的时候就已经设置了投影矩阵,这个时候绘制的顶点数据投影在屏幕的时候就已经是二维的。DX8和DX9还是有很多不一致的地方。两种版本混用是非常非常容易出问题的。 当然距离达到:网络游戏——降龙之剑的效果还是有一段路要走的。我指的是他的基本画面效果,其实它的色彩方面还是有问题的...
阅读全文
posted @
2012-03-01 19:44
一笑如风
阅读(3062)
推荐(0) 编辑
HGE重新架构资源管理
摘要:在HGE1.81版本开始修改结构。为什么不在HGE加强版本上面修复,原因很简单,这个版本的作者D3D功底一般,封装方面的技术一般。不但没有使引擎更符合大型游戏的开发,而且使很多方面搞得相当复杂。不利于引擎的以后强化。所以最理想的还是从官方的原版开始修改引擎基础部分。使之更符合大型游戏的开发。资源管理方面,HGE提供了一个从Zip压缩文件加载的接口类。其实任何一个商业游戏都是不可能使用Zip压缩文件作为客户端图片资源文件的。因为大家都是使用了各自的自定义文件格式资源文件。Zip压缩文件适用于补丁的更新。但是目前主流的做法好像已经改变。使用了微端技术。其实说白了,就是玩家一边玩游戏一边下载客户端资
阅读全文
posted @
2012-03-01 02:21
一笑如风
阅读(2280)
推荐(0) 编辑