gpt4 book ai didi

sdl-2 - 从 SDL2 纹理获取像素信息

转载 作者:行者123 更新时间:2023-12-04 00:40:39 29 4
gpt4 key购买 nike

我目前正在使用 SDL2 编写一个简单的程序,您可以在其中将一些形状(正方形、圆形、三角形等)拖到 Canvas 中并旋转它们并四处移动它们。每个形状都由从 PNG 文件创建的 SDL 纹理直观地表示(使用 SDL_image 库中的 IMG_LoadTexture 函数)。

问题是我想知道纹理中的某个像素是否透明,以便当有人点击图像时我可以确定我是否必须执行某些操作(因为点击是在非透明区域上) .
因为这是一些学校作业,我面临一些限制,也就是说,只能使用 SDL2 库,如果有问题的像素是透明的,我无法找到一些可以查找的 map ,因为图像是动态选择的。此外,我考虑使用 SDL 表面来完成这项任务,从原始图像创建它们,但由于形状正在通过纹理旋转而不起作用。

最佳答案

您可以使用 Render Targets 来完成此操作。 .

SDL_SetRenderTarget(renderer, target);
... render your textures rotated, flipped, translated using SDL_RenderCopyEx
SDL_RenderReadPixels(renderer, rect, format, pixels, pitch);

在最后一步中,您使用 SDL_RenderReadPixels 从渲染目标读取像素。然后你必须弄清楚所需像素的 alpha channel 是否为零(透明)。您可以从渲染目标或整个纹理中仅读取您想要的一个像素,您选择哪个选项取决于您必须执行的 HitTest 数量、纹理旋转/移动的频率等。

关于sdl-2 - 从 SDL2 纹理获取像素信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107476/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com