基于Java openGL和GTK的应用程序破坏了C++;openGL? 我正在开发一个引擎+一个C++上的游戏,当我运行了一些java或GTK中任何类型的用户界面的应用程序时,每当我运行我的引擎时,我就遇到了怪异的行为。一旦我运行了其中一个应用程序,我的引擎就会停滞到每秒30帧或更少。我将FPS限制在60,但它可以运行4000多个,因此如果将FPS限制在30,则说明我的显示驱动程序中存在错误,或者openGL中存在一些神奇的调用,我的绘图循环中没有包含这些调用。。我不知道
注意:通常重启会清除问题,一切都会恢复正常,直到基本上我使用了另一个不能与straight GL或WDF一起工作的程序基于Java openGL和GTK的应用程序破坏了C++;openGL? 我正在开发一个引擎+一个C++上的游戏,当我运行了一些java或GTK中任何类型的用户界面的应用程序时,每当我运行我的引擎时,我就遇到了怪异的行为。一旦我运行了其中一个应用程序,我的引擎就会停滞到每秒30帧或更少。我将FPS限制在60,但它可以运行4000多个,因此如果将FPS限制在30,则说明我的显示驱动程序中存在错误,或者openGL中存在一些神奇的调用,我的绘图循环中没有包含这些调用。。我不知道,c++,opengl,C++,Opengl,注意:通常重启会清除问题,一切都会恢复正常,直到基本上我使用了另一个不能与straight GL或WDF一起工作的程序 我的问题是,有人知道我在C++中用OpenGL开发的已知的< /强>问题吗?这可能是我的渲染代码中的一个问题吗 注意:我怀疑这是我在显示驱动程序上的代码,其中一个主要原因是我用C/C++编写的游戏使用GL(如quake 3),不受此问题的影响 以下是我的绘图相关代码: ***Init Code*** glDisable( GL_DITHER ); glDisable(GL_A
我的问题是,有人知道我在C++中用OpenGL开发的<强>已知的< /强>问题吗?这可能是我的渲染代码中的一个问题吗
注意:我怀疑这是我在显示驱动程序上的代码,其中一个主要原因是我用C/C++编写的游戏使用GL(如quake 3),不受此问题的影响 以下是我的绘图相关代码:***Init Code***
glDisable( GL_DITHER );
glDisable(GL_ALPHA_TEST);
glDisable( GL_LIGHTING );
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
***Draw Loop***
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_ACCUM_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
if(stage != NULL){
stage->render();
}
//Yes I know, singletons are disgusting. I'm removing them eventually.
Ascengine::VBOManager::getInstance().bindVBO(0);
Ascengine::GLTextureManager::getInstance().bindTexture(0);
glfwSwapBuffers();
请注意,
stage->render()中没有发生任何特殊情况代码>这只是一个显示列表,因此它只需通过子对象逐步向下,调用translate、scale等,并从VBO中绘制纹理和顶点坐标。这些应用程序可能会将交换间隔设置为30fps。如果在限制应用程序以60 fps的速度运行时,您还没有这样做,我会尝试在应用程序启动时更改交换间隔。例如,类似于以下内容(在GNU/Linux上,在windows上使用WGL_EXT_swap_控件):
谢谢你的回答。不幸的是,我已经这样做了。我正在调查天气与否,这实际上可能与我的节流代码中的计时器分辨率问题有关。如果是这样,我将删除或关闭问题。我感谢你的帮助。
glXSwapIntervalSGI(1); // enable V-sycn
glXSwapIntervalSGI(0); // disable V-sync