Эффективность запроса SDL_Surface для цветов пикселей - PullRequest
0 голосов
/ 13 ноября 2018

Я пишу игру, которая имеет простую 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-игр), который использует карту, которая теоретически могла бы быть очень большим со многими регионами)

...