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


发新话题
打印

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

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


TOP

因为PC的显卡,很早就有帧缓存的概念,比如最著名的VGA的mode13h,就是直接把320x200x8bit给映射到了一个内存地址上,可以供CPU读写。
而早期Console,没有帧缓存,是靠图层来做显示,图层则靠块来拼以节约容量并在低成本下提高效率,而像SFC可以在图层上和图层间做一些特效,比如图层的放缩旋转,图层间的半透明,从而以低廉的成本实现不错的效果。
而早期PC的显卡,则一方面受限于帧缓存生成的速度,另一方面是没有一个标准的API,就像我上面说的,320x200x8bit,只有64KB,但哪怕80年代中期的VGA显卡,一般也都有256KB的显存,所以等于用这个分辨率就给浪费掉了,所以才有了Michael Abrash研究的Mode13H的变种:modeX,使用了非标准的方法,一方面是可以支持更高的分辨率,比如400x300@8bit,一方面是可以有多个页,可分为前台显示和后台准备,从而充分利用显存实现更流畅的动画效果。而到了89年,SVGA的一堆显卡都出来了,但作为标准的VESA没记错的话直到94年的VBE1.2版吧,才把保护模式下的SVGA地址功能搞定。这时候已经离DirectDraw的前身WinG问世不久了。
你要说VGA能不能移植Console的游戏,Md的没问题,SFC的有问题,因为SFC有半透明,就像我前面说的,SFC没有帧缓存,它是按图层半透明,但这也就说明它的同屏显示颜色是直接色而不是调色板颜色,所以理论同屏显示颜色的上限是15bit(当然实际肯定达不到),而VGA的256色虽然是从18bit色盘中选,但它的256色是帧缓存的规格,所以它是同屏最多256色,因此移植SFC有问题。当然SVGA就没有这个问题了。
从理论上说,只要你的CPU生成一帧的画面速度够快,那么只要显存速度能做到每1/60秒把一帧的数据拷进显存那就OK。
但实际情况,所谓的2d游戏,本身就是一个没有统一制作方式的东西,比如当年很流行用MMX来优化alpha混合,这是因为当年DirectDraw的功能基本就是一个块拷贝,虽然定义了块拷贝时的alpha blending功能,但直到21世纪后DirectDraw被放弃为止,基本都没有硬件实际支持这个功能所以如果用DDraw那就得CPU来完成alpha混合。而这个功能在3D兴起后被显卡的frame blending给替代了。
而一个游戏到底要用CPU硬算,还是要用硬件特性完成,这个本身就没有统一的规范。你完全可以写个完全CPU实现的2D引擎,但好不好用,人家会不会用,是另一个问题。

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



本帖最近评分记录
  • 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

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