c++ - 什么可能导致 OpenGL 在 "Start Debugging"和 "Start without debugging"选项下表现不同?

标签 c++ windows opengl timer stereo-3d

我用 C++ 编写了一个 3D 立体 OpenGL 程序。我在 timeBeginPeriod(1) 之后使用 timeGetTime 跟踪显示中对象的位置。当我使用“开始调试”运行程序时,我的对象在显示器上平滑移动(正如它们应该的那样)。当我使用“开始而不调试”运行程序时,对象偶尔会卡住几次屏幕刷新,然后跳转到新位置。关于可能导致此问题的原因以及如何解决它的任何想法?

编辑:如果我单击鼠标按钮运行“不调试启动”,那么在短暂的延迟后似乎可以解决抖动问题。我的应用程序是一个控制台应用程序(我在程序第一次启动时接受了一些参数)。这两个选项之间的窗口焦点可能有所不同吗?当我完成从控制台窗口的输入后,是否有明确的方法将焦点强制到 OpenGL 窗口(通过 glutFullScreen(); 全屏显示)?

谢谢。

最佳答案

timeGetTime API 的精度只有 10 毫秒左右。如果您测量的间隔小于 50 毫秒左右,您可能只是看到了系统计时器中预期变化的影响。我不知道为什么调试器会对此产生影响,但系统的整个运作都是一个黑盒子。你可以使用 QueryPerformanceCounter以获得更高分辨率的计时,这可能会有所帮助。

关于c++ - 什么可能导致 OpenGL 在 "Start Debugging"和 "Start without debugging"选项下表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1799070/

相关文章:

c++ - 在 Qt 的外部类中使用 OpenGL 上下文

java - 渲染到一半大小的帧缓冲区,然后将其放大以实现像素化外观

c++ - 如何强制两个进程的执行顺序?

c++ - QtConcurrent::与MainWindow函数一起运行,警告消息 "QObject::setParent: Cannot set parent, new parent is in a different thread"

Python 无缓冲模式在 Windows 中导致问题

windows - 检测 Redis 的 master db 故障转移和自动切换 slave 到 master?

windows - 如何计算文本文件中的行数并将值存储到使用批处理脚本的变量中?

c++ - 多视口(viewport)问题

c++ - 为什么将成员函数指针与 NULL 进行比较会产生警告?

c++ - 在一次处理大量数据时避免Windows中的 "(Not Responding)"标签