AD商业广告自由选择
AD商业广告自由选择

HGE核心绘图解决方案

正文概述 开源人   2024-11-03 15:48:21  

在【【HGE】绘图底层】这个帖子里面有些地方需要更正。RJg1234FCOM专注游戏工具及源码例子分享

  为了不误导别人,这里有必要补充一下:RJg1234FCOM专注游戏工具及源码例子分享

  HGE每次绘图都需要锁定一次缓冲区,只适合绘制大量相同的图片,如果是各种不同的图片,问题就出来了。如果绘制一百张图片就需要锁定和解锁各一百次。了解D3DAPI编程的人明白这是个什么问题。所以现有的HGE绘图算法是完全不适合大型游戏的。RJg1234FCOM专注游戏工具及源码例子分享

  有些人看到HGE自带例子中绘制2000个sprite FPS达200-300以上就以为是正确的,不要忘记绘制的图片都是同一张图片。这个问题是网上一位朋友首先发现的。RJg1234FCOM专注游戏工具及源码例子分享

  这里给出解决方案:RJg1234FCOM专注游戏工具及源码例子分享

  首先删除HGE原有的渲染函数,一个都不要留。RJg1234FCOM专注游戏工具及源码例子分享

  然后制作出一个添加数据的函数,函数调用之前,进行锁定操作,但是只需要锁定一次。RJg1234FCOM专注游戏工具及源码例子分享

  可以不断调用这个函数把四边形数据复制入顶点缓冲区里面。全部复制完毕解锁。RJg1234FCOM专注游戏工具及源码例子分享

  也许你以为跟HGE原来的复制一次就锁定一次是一样的,那么就要仔细思考了。RJg1234FCOM专注游戏工具及源码例子分享

  这里只锁定一次,以后的调用的是不需要锁定的,但是需要在锁定的状态下复制数据。RJg1234FCOM专注游戏工具及源码例子分享

  全部复制完毕之后解锁就行。因为对数据的更新就按照设定的时间来操作。RJg1234FCOM专注游戏工具及源码例子分享

  网络游戏为了同步肯定需要设定一个同样的数据更新时间。RJg1234FCOM专注游戏工具及源码例子分享

  那么在不需要更新的时间内,是不需要对数据进行复制的。RJg1234FCOM专注游戏工具及源码例子分享

  那么原来的一帧时间内锁定一千次,一千张图片需要绘制,现在我们在好几帧的时间内才需要锁定一次,而且是大批量地复制各种不同的图元数据,这个数量的对比就可想而知了。RJg1234FCOM专注游戏工具及源码例子分享

  如果你不了解关于顶点缓冲区锁定操作不当会带来什么问题,可以在网上搜索,很容易得到结果。RJg1234FCOM专注游戏工具及源码例子分享

  而且我把顶点缓冲区的创建和锁定方式全部修改了。以适合数据大批量地复制的要求。RJg1234FCOM专注游戏工具及源码例子分享

  在大部分渲染的时间内,显卡GPU直接读取缓冲区的所有数据进行批量地渲染,CPU只需要做很少的工作。使用高级着色和HLSL技术,也许CPU更空闲。RJg1234FCOM专注游戏工具及源码例子分享

  就是说渲染函数和逻辑函数分开处理。RJg1234FCOM专注游戏工具及源码例子分享

  客户端的绘图核心是绘图算法架构。研究这方面的人很少,原因只有一个,大量程序员缺乏商业游戏实践的开发经验。RJg1234FCOM专注游戏工具及源码例子分享

  对游戏没有深入地了解,哪怕你的编程技术世界上第一,在游戏开发的面前也只是白痴一个。RJg1234FCOM专注游戏工具及源码例子分享

  绘图核心只有一个目的,在大量的场景中绘制大量的图元和大量的特效的时候,游戏的流畅性完全不受到影响。RJg1234FCOM专注游戏工具及源码例子分享

  玩过盛大传奇和传奇世界的人都知道,在攻城的时候在皇宫里面那种走一步卡半天的感受就了解了。RJg1234FCOM专注游戏工具及源码例子分享

  不要认为二维游戏不值得研究,那么你永远都不可能做成成功的三维游戏,因为实际绘图核心是一致的。RJg1234FCOM专注游戏工具及源码例子分享

  不以为三维游戏就肯定不同了。哈哈~~RJg1234FCOM专注游戏工具及源码例子分享

  思路已经给出,大牛很容易修改出来。RJg1234FCOM专注游戏工具及源码例子分享

  当然修改成功之后,你可以不用HGE这个名称了。因为其它方面其实都是D3D架构的常用设置。RJg1234FCOM专注游戏工具及源码例子分享



声明:本文系互联网搜索而收集整理,不以盈利性为目的,文字、图文资料源于互联网且共享于互联网。
如有侵权,请联系 yao4fvip#qq.com (#改@) 删除。