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


发新话题
打印

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

posted by wap, platform: 小米
我查了资料,都说不太清楚。
只说电脑显卡不需要精灵块,没这概念。
而游戏机资源不足,所以有额外的硬件支持。
那我就有个疑问,现在的2d游戏,不是3d转2d那种,哪怕很早之前的2d显卡(s3之类的)都够用吗?


TOP

因为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

CPU强,内存大,硬算。
此外早期PC 2D显卡其实是有专用加速的,字库加速……


TOP

老主机跟老街机集成度太低,芯片性能太差所以才一堆芯片,老的街机甚至连存储芯片能密密麻麻排满一片PCB板,游戏都是分块保存的,这也是为什么很多老游戏模拟器ROM解压出来是一堆相同容量的小文件

PC显卡这个东西已经是技术发展集成度上来以后的产物了,不然硬件成本一般人接受不了的


1. 早期硬件加速 (专用电路)
在20世纪70年代末到90年代中期的游戏机和家用电脑中(如Atari 2600、NES、世嘉MD),Sprite 硬件加速是依靠专门的图形芯片来实现的。
减轻CPU负担: CPU只需要向图形硬件发送简单的命令(例如:“在坐标 X, Y 处显示预定义的 Sprite #5”)。CPU无需执行逐像素的绘制操作或复杂的位图操作(bit blitting),从而能专注于游戏逻辑和物理计算。
独立的显存和逻辑: Sprite 图像本身存储在专用的视频内存(或ROM)区域。图形硬件内置了逻辑,在生成视频信号扫描线时,能够根据 CPU 提供的坐标,自动将 Sprite 图像叠加(合成)到背景图像的相应位置。
硬件限制: 这种专用硬件通常有局限性,例如每条扫描线能显示的 Sprite 数量有限,或者 Sprite 的大小、颜色数量有限制。
2. 现代硬件加速 (通用GPU)
随着通用图形处理器(GPU)性能的爆炸式增长,专用的 Sprite 硬件变得不必要了。现代硬件加速利用 GPU 强大的并行处理能力,主要通过以下技术实现:
利用GPU并行处理: 现代GPU拥有大量的并行处理单元,可以同时处理海量的像素和顶点数据,远超早期专用硬件。
纹理图集 (Sprite Sheets): 游戏将多个 Sprite 图像打包到一个大的纹理中(称为精灵表或图集)。这减少了在 CPU 和 GPU 之间传输数据以及进行“绘制调用”(Draw Calls)的开销。
批量渲染 (Sprite Batching): 引擎将场景中具有相同纹理和着色器的多个 Sprite 组合成一个批次,使用一次绘制调用发送给 GPU。这大大提高了效率,因为减少了 CPU 和 GPU 之间的通信负担。
硬件管线集成: 现代渲染管线(如OpenGL、DirectX)将 Sprite 视为由两个三角形组成的四边形,通过标准的顶点着色器和像素着色器进行高效渲染、缩放、旋转和混合,完全在 GPU 上完成。

[ 本帖最后由 manvvvv 于 2025-12-16 18:41 编辑 ]

TOP

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