0

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

考虑以下情况:

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

2 回答 2

1
  1. 您需要在鼠标移动或球移动时执行命中测试。
  2. 高效的命中测试/碰撞检测是游戏开发中的一个主要问题。如果性能成为问题,碰撞检测通常分两个阶段执行:“宽阶段”和“窄阶段”。广义阶段的一种方法是四叉树(二维):空间(窗口)被划分为“部分”;每个球和鼠标根据它们的位置被分配到一个部分。只有与鼠标位于同一区域的球才是窄阶段的候选对象。在窄阶段,您只需测试在宽阶段中幸存下来的候选人。
于 2013-09-23T07:13:01.380 回答
0

通常应用程序会监听 WM_MOUSEMOVE 事件并在事件处理程序中更新任何受影响的对象(或通知更改事件的对象,以防它是昂贵的操作)。渲染代码不需要轮询鼠标光标的位置。

于 2013-09-23T05:26:09.310 回答