对于我在脑机接口方面的实习,我需要在 CRT 显示器上生成一些非常快速闪烁的方块(闪烁 = 在两种颜色之间交替)。显示器的刷新率为 85Hz,我们希望这是瓶颈,这意味着重新绘制所有方块最多需要 1000/85 = 11ms。
我对 GUI/图形编程的偏好语言是 Java,所以我尝试使用 AWT 制作原型,因为它是同步的(与 Swing 不同)。我现在似乎有两个问题:第一个是时间测量表明,即使是 9 个方格的重新绘制也需要太长时间。我的算法采用所需的频率并计算系统应该提前重新绘制的时间,然后使用一个循环(没有睡眠/等待延迟)检查每次是否达到下一个“时间”,如果是,则循环遍历所有方格来重新粉刷它们。我现在实现它的方式是,正方形是背景颜色为 A 的面板,并包含在另一个背景颜色为 B 的面板中,并且闪烁发生是因为面板的可见性发生了变化。我认为这比一个必须一直绘制矩形的面板要快。我没有像样的分析工具(无法让 Eclipse TPTP 或 NetBeans 分析器工作),所以我不能确定,但我觉得瓶颈实际上不在重绘中,而是在循环中(有条件检查等)。你能推荐一些关于我应该做什么的事情吗?
第二个问题是,正方形似乎是从上到下渲染的。就好像它们展开得非常快,但仍然很明显。这是无法接受的。我想知道的是,是什么原因造成的。是 Java/AWT 还是 Windows,或者只是我编写了一个慢速算法?
你能推荐一些东西给我试试吗?我更喜欢使用 Java,但如果必须,我会使用 C(或其他东西)。