【发布时间】:2022-01-20 18:34:18
【问题描述】:
我尝试先使用SDL_RenderFillRect() 和SDL_RenderFillRects() 来实现它,但是它不起作用,我决定研究使用表面,如SDL_FillRect() 中所述的文档中所述,它还需要一个表面,所以我相信绘制多个的关键是使用表面。但是,我发现文档很难理解(我什至不知道从哪里开始查找)。谁能给我一个纲要?
编辑:我认为我遇到了这个问题,因为我认为SDL_Rect(s) 被读写,结果它是只读的。现在还是不知道怎么办
顺便说一句,我正在用 c 编码。
编辑:这是我尝试过的
我没有具体的代码,因为它不起作用,但是我的想法存在根本缺陷,因为我的思维过程是:
- 制作一个 SDL_Rect 数组。
- 制作一个矩形并将其附加到此数组中。
- 渲染它。
- 对不同颜色的数组执行此操作。
我相信这行不通。我首先听说你需要制作纹理或其他东西。我还不确定你能告诉我如何使用 SDL_Textures。
【问题讨论】:
-
您能否提供一个minimal reproducible example 来演示您如何尝试绘制多个矩形?
-
我不经常使用 SDL:但是在绘图时,您通常会构建图像,然后将图像“blit”到屏幕上。这意味着您需要将所有矩形绘制到缓冲区或表面,然后一次显示所有结果。
-
@DavidC.Rankin Not with
SDL_RenderFillRect它只是绘制一个填充了当前渲染绘制颜色的矩形。不过,我可能会更多地阅读您所说的内容。绘制完所有想要的矩形后,您确实需要调用SDL_RenderPresent来显示框架。 -
@RetiredNinja 你去我给你编辑了
-
您可以制作一个不起作用的代码示例,我们可以帮助您修复它。这是一个非常简单的 API。在每个帧中,在绘制矩形之前调用
SDL_RenderClear,之后调用SDL_RenderPresent。在两者之间调用SDL_SetRenderDrawColor设置颜色,设置SDL_Rect结构中的值,然后调用SDL_RenderFillRect(renderer, &rectangle);以获得所需的多个不同矩形。