使用SDL2从表面/纹理读取像素的RGBA值?

如何在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)。

本文链接:https://www.f2er.com/2997070.html

大家都在问