我对应用程序如何使用Direct2D处理鼠标输入感到困惑。

考虑这种情况:


假设我在窗户上画了一个球。如果将光标移到球上,它将改变颜色。
这是否意味着应用程序必须轮询鼠标并检查光标是否几乎在应用程序运行时间的每秒钟都在球上。
当您有更多物品时,这是否会降低性能?除了轮询之外,还有其他方法吗,换句话说就是一堆if语句。

最佳答案

当鼠标移动或球移动时,您需要执行命中测试。
高效的命中测试/碰撞检测是游戏开发中的主要问题。如果性能成为问题,则冲突检测通常分为两个阶段:“广泛阶段”和“狭窄阶段”。广义阶段的一种方法是quad trees(对于二维):空间(窗口)分为“部分”;每个球和鼠标根据其位置分配到一个部分。只有与鼠标处于同一截面的球才是狭窄阶段的候选对象。在狭窄阶段,您只需测试在广泛阶段幸存下来的候选人。

关于c++ - Direct2D C++用户输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18951907/

10-12 23:56