什么可能导致“无调试开始”选项OpenGL的不同的行为下的“开始调试”对?

StackOverflow https://stackoverflow.com/questions/1799070

我已用C ++编写的3D立体OpenGL图像。我跟踪我的显示位置的对象应具备使用timeBeginPeriod(1)后timeGetTime。当我用“开始调试”运行程序我的对象顺利地跨越显示器(他们应该)。当我运行该程序“不开始调试”的对象偶尔冻结几个屏幕刷新然后跳转到一个新的位置。任何想法,以什么可能会导致此问题,以及如何解决它?

编辑:这似乎是跳跃可以在短暂的延迟后,当我通过“开始没有调试”如果我点击鼠标键运行来解决。我的应用程序是一个控制台应用程序(我参加一些参数第一次启动程序时)。有可能在这两个选项之间的窗口焦点有区别吗?有没有一个明确的方法来强制焦点到OpenGL窗口(通过glutFullScreen()以全屏幕;)?当我从控制台窗口拍完输入

感谢。

有帮助吗?

解决方案

这导致任何程序不同的行为而被调试,而不是使用未初始化的变量,特别是读取未初始化存储器正在调试的最常见的事情。检查你没有这样做。

更多的东西OpenGL的具体 - 你可能有一些问题命令的冲洗。试着画每帧后插入glFinish()。结果 当发生冻结有实际帧被渲染,而不是整个应用程序冻结这也可能有助于以某种方式真正做到这一点。如果更可能有它,你必须在逻辑一些bug,因为它似乎是OpenGL的它的工作。

其他提示

timeGetTime API仅具有类似10ms的精度。如果您要衡量的间隔小于50ms左右,你可能只是看到在系统定时器的预期变化的影响。我不知道为什么调试器会对此产生影响,但随后该系统的整体运作是一个黑盒子。您可以使用 QueryPerformanceCounter的,以获得更高的 - 分辨率的定时,这可能会有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top