我如何确定(我知道这不是正确使用的术语)对于a 中鼠标的每个window space
位置,它都会转换为OGL space
(-1, 1)。在这种情况下,用户移动鼠标非常快,我假设它之前的所有位置都转换为 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()
}
这些是要执行的单独线程(但实际上不是真正的线程)假设mouse.pos = (0, 0)
然后我将鼠标移动得足够快以使新线程mouse.pos
变为 (10, 10)。在单次执行循环中,鼠标位置与之前的位置相差甚远。现在,我如何通过实现 Christian Rau 提到的方法告诉我的程序,Bresenham's line algorithm
由该算法生成的那些值(未被跟踪)已被鼠标越过。我会为所有这些职位添加另一个循环吗?