关于图像与功能的渲染问题

Rendering issue regarding imagery versus functionality

据我所知,在 SDL2 中渲染纹理,一切都在幕后等待,纹理在使用 SDL_RenderPresent() 函数后出现,并随着 SDL_RenderClear() 消失,您在前进之前使用它到下一帧。

我理解就图像而言,但是功能呢?我有两个链接到鼠标事件的按钮纹理,我想在不同的时间在不同的地方查看和使用它们。我让它们在不同的枚举状态下呈现,并且当状态改变时每个按钮确实会出现和消失。

但是,由于两个按钮纹理始终“存在”,即使未渲染,我仍然可以在任何给定时间未渲染的不可见按钮上单击鼠标。这似乎不是鼠标运动事件的问题,只是鼠标按钮事件。如何在未渲染纹理时使纹理不活动和不可见?

我通过一些修补解决了这个问题,一位名叫 mbozzi 的更有经验的程序员帮助我找到了正确的方向,了解发生了什么。根本问题是由于我完全解耦了 GUI 逻辑和 GUI 渲染。我们总是被告知要做的是:解耦一切,对吧?但是我需要将我想要同时发生的逻辑和渲染结合起来。

我的事件轮询>>鼠标输入>>图像渲染代码是一个巨大的循环。然而,当我将这个巨大的循环拆分为单独的迷你事件轮询>>鼠标输入>>图像渲染循环,每个循环独立运行(但不是同时运行,我只是将它们置于各自不同的枚举游戏状态)时,问题就解决了。因此,如果有人在单击不可见按钮时遇到类似问题,希望这会有所帮助。