» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

专业问题,电脑2d显卡(很久以前)并没有精灵块的概念,与2d游戏机的区别是?

因为PC的显卡,很早就有帧缓存的概念,比如最著名的VGA的mode13h,就是直接把320x200x8bit给映射到了一个内存地址上,可以供CPU读写。
而早期Console,没有帧缓存,是靠图层来做显示,图层则靠块来拼以节约容量并在低成本下提高效率,而像SFC可以在图层上和图层间做一些特效,比如图层的放缩旋转,图层间的半透明,从而以低廉的成本实现不错的效果。
而早期PC的游戏开发,则一方面受限于帧缓存生成的速度,另一方面是没有一个标准的API,就像我上面说的,mode13H的320x200x8bit,只有64KB,但哪怕80年代中期的VGA显卡,一般也都有256KB的显存,所以等于用这个分辨率就把大部分的显存给浪费掉了,所以才有了Michael Abrash研究的Mode13H的变种modeX,使用了非标准的方法,一方面改进是可以支持更高的分辨率,比如400x300@8bit甚至360x480@8bit,一方面改进是可以有多个页,可分为前台显示和后台准备。这样就可以充分利用显存实现更清晰流畅的动画效果。再有到了89年,支持SVGA的一系列显卡都出来了,因为SVGA实际是指‘超越VGA的那一堆’的通称,所以各家显卡支持的功能以及分辨率色彩,其实是有点差别的,但作为标准的VESA没记错的话是直到94年的VBE1.2版吧,才把保护模式下的SVGA地址功能搞定。这时候已经离DirectDraw的前身WinG问世不久了。
你要说VGA能不能移植Console的游戏,MD的没问题,SFC的则有些问题,关键在于SFC有半透明,就像我前面说的,SFC没有帧缓存,它是按图层半透明,但这也就说明它的同屏显示颜色是直接色而不是调色板颜色,理论同屏显示颜色的上限是15bit(当然实际肯定达不到),而VGA的256色虽然是从18bit色盘中选,但它的256色是帧缓存的规格,所以它是同屏最多256色,因此移植SFC会遇到问题。当然支持高彩色的SVGA就没有这个问题了。
顺便说一下,日本的情况特殊一些,因为PC98这玩意在日本几乎是垄断地位,而这东西,几乎到了90年代中期,还在广泛用它那个介于EGA和VGA之间规格的EGC,这样你就不难理解为何日本那一水HGame厂商,在dos上的游戏都是16色,包括光荣在dos上的那些游戏也是,甚至dos版的三国4,有一个SVGA模式,运行文件叫San486.exe,是800x600的分辨率,但依然是16色。而大航海2的人物移动也是一格一格地跳,完全不像Console版本的平滑移动。因为这些的资源技术都是继承自PC98版。所以对那时的日本游戏商来说,PC确实是不那么适合游戏的。
从理论上说,只要你的CPU生成一帧的画面速度够快,那么只要显卡带宽能做到每1/60秒把一帧的数据拷进显存那就OK。
但实际情况,所谓的2d游戏,本身就是一个没有‘正统’制作方式的东西,比如当年很流行用MMX来优化alpha混合,这是因为当年DirectDraw的功能主要就是一个块拷贝,虽然定义了块拷贝时的alpha blending功能,但直到21世纪后DirectDraw被放弃为止,基本都没有硬件去实际支持这个功能,所以如果用DDraw那就只能用CPU来完成alpha混合。而这个功能在3D兴起后被显卡的framebuffer blending给替代了,自然这也是正确的趋势。
而一个游戏到底要用CPU硬算,还是要用硬件特性完成,这个本身也没有统一的要求。你完全可以写个全部由CPU实现的2D游戏引擎,但效率够不够,好不好用,人家会不会用,是另一个问题。

[ 本帖最后由 hourousha 于 2025-12-17 14:44 编辑 ]


本帖最近评分记录
  • dabing 激骚 +1 最骚 Rated by wap 2025-12-16 18:55

TOP

发新话题
     
官方公众号及微博