0

我想使用 SDL2 库从纹理中读取像素。我知道直接从纹理中读取像素是不可能的,但是您可以使用以下函数:

int SDL_RenderReadPixels(SDL_Renderer*   renderer,
                     const SDL_Rect* rect,
                     Uint32          format,
                     void*           pixels,
                     int             pitch)

基本上,我想要在我的应用程序中做的是从窗口屏幕读取单个像素并检测它是否是透明像素。我该如何使用该功能?什么是 pitch 属性,我如何定义 SDL_Rect 以及如何获得正确格式的像素?如您所见,我正在检测鼠标左键单击事件并将 x 和 y 坐标传递给方法:

void detectElementOnXandY(SDL_Renderer* renderer, int x, int y){

 // x represents the coordinate x.
 // y represents the coordinate y.

 // Here i have to call the function
 int result = SDL_RenderReadPixels(renderer, rect, format, pixels, pitch);
}
4

1 回答 1

1

音高似乎是扫描线的长度(以字节为单位)。所以取决于你的纹理格式:1 * bytesPerPixel。(可能每个像素 4 个字节)矩形应该类似于 (x,y,x+1,y+1),格式应该类似于 SDL_PIXELFORMAT_RGBA8888 或您的特定纹理的等价物。您可能需要反转 y 坐标,具体取决于 SDL 使用的是 OpenGL(从下到上)约定还是 Windows(从上到下)约定。

于 2013-10-01T16:22:53.023 回答