如何在Free Pascal中使用SDL2从表面或纹理读取给定坐标x和y处特定像素的RGBA值?
xialz 回答:使用SDL2从表面/纹理读取像素的RGBA值?
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,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)。