像素困境:选择合适的图形API

时间:2010-09-15 15:44:37

标签: image graphics 2d gdi sdl

我想用可破坏的地形制作一个侧面滚动的2D游戏。我的方法是将地形作为BMP并访问每个像素。

但是我在为我的游戏选择合适的图形API时遇到了问题。

我已经考虑了几个选项:

  • SDL

我开始在SDL中编写游戏,我将地形作为表面,每帧都在屏幕上显示。不幸的是它很慢,当更多的地形可见时它变得更慢。在屏幕上只绘制一个位图时,我有30 FPS。

  • GDI

我看过类似于我想制作的游戏。它使用GDI并且可以逐个像素地操纵。 速度似乎是O.K.但是由于SDL在Windows上使用GDI作为后端,为什么我不能只使用SDL?

  • SDL + OpenGL

速度非常好,尽管我遇到了技术问题 - 当它加载到OpenGL中时我无法再操纵纹理,这会破坏我的整个计划

如前所述:我需要访问绘制的图像的每个像素,并且绘图本身应该足够快,以便能够平滑地渲染1280 * 500像素的地形。

2 个答案:

答案 0 :(得分:0)

我建议您使用OpenGL,因为您可以将工作卸载到GPU。但是,您所描述的内容听起来像是要在客户端(CPU)上进行大量操作,因此您可能仍然会遇到CPU和GPU之间所有吞吐量的瓶颈。

使用OpenGL实现所需功能的最佳方法可能是使用PBO(Pixel Buffer Objects)。 AFAIK是从客户端(CPU)访问/修改服务器端(GPU)像素数据的最有效方式。

答案 1 :(得分:0)

在2014年,尝试SDL2 - 它被称为硬件加速。

但是,我无法告诉你有关正确像素策略的任何信息。好像recommended way就是要在每一帧上将内存surface上传到视频texture