SDL从纹理中读取像素

时间:2013-10-01 12:55:38

标签: c++ opengl sdl pixels sdl-2

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

int SDL_RenderReadPixels(SDL_Renderer*   renderer,
                     const SDL_Rect* rect,
                     Uint32          format,
                     void*           pixels,
                     int             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);
}

1 个答案:

答案 0 :(得分:1)

音高似乎是扫描线的长度(以字节为单位)。所以取决于纹理的格式:1 * bytesPerPixel。 (每个像素大概4个字节) rect应该是(x,y,x + 1,y + 1) 格式应该类似于SDL_PIXELFORMAT_RGBA8888或特定纹理的等效格式。 如果SDL使用OpenGL(从下到上)约定或Windows(从上到下)约定,则可能必须反转y坐标。