我正在编写一个具有简单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游戏),理论上可以在很多地区都很大)