マウスのすべての位置が(-1, 1)window space
に変換されることをどのように判断できますか (これは使用するのに適切な用語ではありません)。OGL space
この場合、ユーザーはマウスを非常に速く動かします。これは、以前の位置がすべてOGL 座標に変換されていることを前提としています。私が言おうとしているのは...私のC++ OGL coordinates converter
計算コストが非常に高い場合でも、一般的なCPUはそれを実行するのに十分な速度です(以前のすべてのイベントを追跡するため)? そこに非常に時間のかかるループを入れたとしましょう。または..非常に高速method()
です。マウスを十分速く動かした場合に、OGL 座標がスキップされないようにするにはどうすればよいですか? ここで結論を急ぐつもりはありません。
編集:
私のプログラムのメインループは次のようなものです(疑似コード):
void Pollevents()
{
for everyt_obj in this
{
if Not Collide()
{
Move(x, y) //
}
}
}
void MousePos()
{
mouse.pos = To_OGL_Coord2f()
}
これらは実行される別々のスレッドです (しかし、実際には実際のスレッドではありません) 次に、新しいスレッドを (10, 10) にmouse.pos = (0, 0)
するのに十分な速さでマウスを動かしたとします。mouse.pos
ループの 1 回の実行で、マウスの位置が以前の位置から大きく変化しました。Bresenham's line algorithm
さて、クリスチャン・ラウが述べたように、そのアルゴリズムによって生成された値(追跡されていない)がマウスによって交差されたことを実装することによって、プログラムにどのように伝えることができますか。それらすべての位置にステップするための別のループを追加しますか?