查询SDL_Surface像素颜色的效率

时间:2018-11-13 03:25:41

标签: c++ performance sdl sdl-2

我正在编写一个具有简单2D地图的游戏,需要确定用户单击了地图上的哪个“区域”。每个区域都有与之关联的唯一RGB颜色。因此,考虑到点击的(x,y)坐标,我可以这样做:

Uint32 *pixels = (Uint32 *) image_surface_->pixels;
Uint32 pixel = pixels[(y * image_surface_->w) + x];
Uint8 r, g, b;

SDL_GetRGB(pixel, image_surface_->format, &r, &g, &b);

SDL_Color rgb = {r, g, b, 255};

其中image_surface_SDL_Surface,其中包含加载到游戏SDL_Window中的地图。

在上面的代码之后,我遍历了区域列表并检查其中哪些区域具有匹配的颜色值。

我的问题是,查询SDL_Surface像素的效率如何?是否只是O(1)(因为您正在做的就是索引指针)?还是还有其他事情?

(对于我正在写的实际游戏,效率不重要并不重要,但我计划开发一个微型引擎来编写使用地图的2D(以及可能的3D游戏),理论上可以在很多地区都很大)

0 个答案:

没有答案