在Open GL中使用双缓冲区和预先确定的帧速率绘制一条线
Draw a Line with double buffer and pre-determined frame rate in Open GL
我想写一个有两个缓冲区的程序,并在控制台中显示每秒30帧的帧速率。我正在使用Open GL-C++
Display()
{
glutSwapBuffers();
}
fps:计时器
void mytimer(int fps)
{
glutTimerFunc(1000/30 , mytimer, 0);
glutPostRedisplay();
}
这段代码画了一条线,但我想以每秒30帧的帧速率画一条线。
void drawScene (void){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2f(0.0,0.0);
glVertex2f(120.0,120.0);
glEnd();
glFlush();
}
int main (int argc ,char** argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(360,360);
glutCreateWindow("mohammad");
initRendering();
mytimer(fps);
//glutDisplayFunc(drawScene);
glutDisplayFunc(Display);
glutMainLoop();
return (0);
}
glutTimerFunc(1000/30 , mytimer, 0);
告诉GLUT"从现在起,每1000/30毫秒调用一次mytimer
"。您可能想从main
调用它。否则GLUT将不知道您已经编写了计时器函数。
第一步。
你的代码中有这一行吗?
glutIdleFunc(idle);
如果是,请转到idle()方法并对其中的所有内容进行注释。您需要强制glutIdleFunc()
什么都不做。通常你有这个:
// executes every time if there is nothing to do basically.
void idle()
{
glutPostRedisplay(); //draw a frame
}
// callback
glutIdleFunc(idle);
由于回调(glutIdleFunc)每次都调用idle(),如果opengl没有更好的事情可做,那么你就无法控制fps,你需要禁用它。那么,你的计时器应该工作得很好。
这是我的一段限制为每秒60帧的代码。效果很好。
void frame_limit(int value)
{
glutPostRedisplay();
glutTimerFunc(1000 / 60, frame_limit, 0);
}
void idle()
{
//glutPostRedisplay();
}
void setupCallbacks()
{
glutCloseFunc(cleanup);
glutDisplayFunc(display);
glutIdleFunc(idle);
glutTimerFunc(1000 / 60, frame_limit, 0);
}
void init(int argc, char* argv[])
{
createShaderProgram();
createBufferObjects();
setupCallbacks();
}
int main(int argc, char* argv[])
{
init(argc, argv);
glutMainLoop();
exit(EXIT_SUCCESS);
}
相关文章:
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 在打开多个其他窗口时使用全屏窗口时帧速率非常低
- 如何在IQualProp::get_AvgFrameRate中重置帧速率?
- 如何在不同的线程中保持一定的帧速率
- 根据帧速率缩放/缩小数字
- 将Kinect v2帧速率(rgb、深度、骨架)设置为每秒25帧
- 直接显示返回错误的帧速率 FPS
- SDL 帧速率上限实施
- 在 OpenGL 中,在保持良好帧速率的同时,VBO 中有多少个顶点的好目标是什么
- 视频流控制帧速率x264
- 使用C (Linux)更改BlueFox3相机的流帧速率
- EDSDK 捕获高帧速率
- WinApi 在每一帧中绘制
- OPENCV C 多线程以改善帧速率
- SDL 2.0 中是否内置了帧速率上限
- OpenGL:在立方体内部时帧速率直线下降
- 使用背景扣除MOG2时,帧速率下降
- 设置帧速率?这是个好主意吗
- Kinect 手指跟踪和帧速率
- 在Open GL中使用双缓冲区和预先确定的帧速率绘制一条线