【发布时间】:2015-04-26 15:38:03
【问题描述】:
在我的项目中,我使用 SDL2 + OpenGL。有简单的代码。当我想清除缓冲区并开始在其中绘制时,会调用函数VPreRender()。之后,当我想在屏幕上显示这个缓冲区时,我使用函数VPostRender()。
使用集成显卡 (HD Intel) 启动程序时,窗口出现时不闪烁。但是当我使用高性能 NVIDIA 显卡启动程序时,它开始闪烁几秒钟然后停止。然后一切看起来都很好。如果我想调整窗口大小,也会出现同样的情况。那么我做错了什么?为什么窗口在闪烁?
bool SDLRender::VPreRender()
{
glClearColor(m_backgroundColor.r, m_backgroundColor.g, m_backgroundColor.b, m_backgroundColor.a);
glClear ( GL_COLOR_BUFFER_BIT );
}
bool SDLRender::VPostRender()
{
SDL_GL_SwapWindow(m_pWindow);
}
【问题讨论】:
-
只有这里是你打电话给
SDL_GL_SwapWindow()的地方吗?这只是一个疯狂的猜测,但如果您每帧交换多次,您可能会得到这些类型的症状。 -
@RetoKoradi 哦,我怎么没注意到这一点。是的,我调用了 SDL_GL_SwapWindow() 2 次。所以现在程序运行良好。