【发布时间】:2019-12-01 21:10:52
【问题描述】:
如何在 Free Pascal 中使用 SDL2 从表面或纹理中读取给定坐标 x 和 y 处特定像素的 RGBA 值?
【问题讨论】:
-
SDL_RenderReadPixels() -
是的,我如何从中准确提取 RGBA 值? SDL_RenderReadPixels 将从表面读取像素并将它们复制到目标纹理上,仅此而已。它本身不会给我一个像素的 RGBA 值(或在 SDL_RenderReadPixels 的情况下为矩形)。
-
你错了。它将值写入
void* pixels。将 32 位分配为uint8_t pixels[4];并调用SDL_RenderReadPixels(renderer, &r, SDL_PIXELFORMAT_RGBA32, &pixels, 1);其中const SDL_Rect r = {x, y, 1, 1};然后pixels[0]是红色值,pixels[3]是 alpha 等(但在 Pascal 中不是 C) -
wiki.libsdl.org/SDL_RenderReadPixels 甚至不包含“纹理”这个词!
-
@seb0029 不要将您的解决方案编辑到您的问题中 - 如果您认为值得分享,请将其作为答案发布。