SDL считывает пиксели из текстуры

Я хочу читать пиксели из текстуры, используя библиотеку SDL2.
Я знаю, что невозможно напрямую прочитать пиксель из текстуры, но вы можете использовать следующую функцию:

int SDL_RenderReadPixels(SDL_Renderer*   renderer,
const SDL_Rect* rect,
Uint32          format,
void*           pixels,
int             pitch)

По сути, в моем приложении я хочу прочитать один пиксель на экране окна и определить, является ли он прозрачным или нет.
Как я могу использовать эту функцию?
Что такое атрибут pitch, как я определяю SDL_Rect и как получить пиксель в правильном формате?
Я обнаружил событие щелчка левой кнопкой мыши и передал координаты x и y методу, как вы можете видеть:

void detectElementOnXandY(SDL_Renderer* renderer, int x, int y){

// x represents the coordinate x.
// y represents the coordinate y.

// Here i have to call the function
int result = SDL_RenderReadPixels(renderer, rect, format, pixels, pitch);
}

-1

Решение

Кажется, что шагом является длина строки сканирования в байтах. Итак, в зависимости от формата вашей текстуры: 1 * bytesPerPixel. (вероятно 4 байта на пиксель)
Прямоугольник должен быть чем-то вроде (x, y, x + 1, y + 1)
и формат должен быть что-то вроде SDL_PIXELFORMAT_RGBA8888 или эквивалент для вашей конкретной текстуры.
Возможно, вам придется инвертировать координату y в зависимости от того, использует ли SDL соглашение OpenGL (снизу вверх) или соглашение Windows (сверху вниз).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]