Считать RGBA значения пикселей с поверхности / текстуры с помощью SDL2? - PullRequest
0 голосов
/ 02 декабря 2019

Как мне прочитать значения RGBA определенного пикселя в заданных координатах x и y с поверхности или текстуры с SDL2 в Free Pascal?

1 Ответ

0 голосов
/ 03 декабря 2019
var
    spriteSheetTexture: PSDL_texture;
    pixel: ^UInt8;
    pixelCnt: byte;
    SDLRect: TSDL_rect;

spriteSheetSurface:=SDL_loadBMP(PChar('spr4\sprite sheets\spr'+fVal(spriteSheetNum)+'.spr'));
SDLRect.x:=0; SDLRect.y:=0; SDLRect.w:=1; SDLRect.h:=1;
SDL_renderReadPixels(SDLRenderer, @SDLRect, 0, pixel, spriteSheetSurface^.pitch);
for pixelCnt:=0 to 3 do
    writeLn(pixel[pixelCnt]);

На самом деле это не похоже на работу. pixel возвращает ноль для каждого индекса, независимо от того, какой пиксель я читаю.

Что ж, спасибо, что проголосовали за мой пост. Я искал в интернете 4 часа, пытаясь найти решение. Черт возьми, у меня сегодня выходной, и я занимаюсь исследованиями с утра. Так зачем опускать мой пост из-за отсутствия исследовательских усилий ?!

Я был прав, когда сказал, что SDL_RenderReadPixels включает в себя текстуру. Документация SDL 2 ссылается на это: «Используйте эту функцию для чтения пикселей из текущей цели рендеринга». Текущей целью рендеринга является экран текстуры или SDL (https://wiki.libsdl.org/SDL_RenderReadPixels).

...