【发布时间】:2021-01-29 21:29:40
【问题描述】:
如何使用 Pascal SDL2 从 sdl_surface 上指定的 x y 位置读取像素的 RGB 值?我已经尝试找到解决方案,但没有发现任何可行的方法。
我试过了
function get_pixel32(surface: psdl_surface; location: vector2): uInt32;
var pixels: ^uInt32;
begin
if sdl_mustLock(surface) then sdl_lockSurface(surface);
pixels^:= uInt32(surface^.pixels);
get_pixel32:= pixels[(location.y * surface^.w) + location.x];
sdl_unlockSurface(surface);
end;
begin
pD:= get_pixel32(surface1, vector2.new(1, 1));
sdl_getRGBA(pD, surface1^.format, @r, @g, @b, @a);
end.
但是当我在表面的 X 坐标上循环 32 个像素时,它以非随机模式(黑色、随机深色、随机亮色、随机深色、黑色等)返回给我随机颜色。
【问题讨论】: