Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Java openGL和GTK的应用程序破坏了C++;openGL? 我正在开发一个引擎+一个C++上的游戏,当我运行了一些java或GTK中任何类型的用户界面的应用程序时,每当我运行我的引擎时,我就遇到了怪异的行为。一旦我运行了其中一个应用程序,我的引擎就会停滞到每秒30帧或更少。我将FPS限制在60,但它可以运行4000多个,因此如果将FPS限制在30,则说明我的显示驱动程序中存在错误,或者openGL中存在一些神奇的调用,我的绘图循环中没有包含这些调用。。我不知道_C++_Opengl - Fatal编程技术网

基于Java openGL和GTK的应用程序破坏了C++;openGL? 我正在开发一个引擎+一个C++上的游戏,当我运行了一些java或GTK中任何类型的用户界面的应用程序时,每当我运行我的引擎时,我就遇到了怪异的行为。一旦我运行了其中一个应用程序,我的引擎就会停滞到每秒30帧或更少。我将FPS限制在60,但它可以运行4000多个,因此如果将FPS限制在30,则说明我的显示驱动程序中存在错误,或者openGL中存在一些神奇的调用,我的绘图循环中没有包含这些调用。。我不知道

基于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

注意:通常重启会清除问题,一切都会恢复正常,直到基本上我使用了另一个不能与straight GL或WDF一起工作的程序

我的问题是,有人知道我在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