小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

OpenGL內(nèi)存泄漏之主循環(huán)函數(shù)glutMainLoop()

 kimbaku 2011-01-05

 
 


OpenGL內(nèi)存泄漏之主循環(huán)函數(shù)glutMainLoop() 收藏
      在Win32控制臺(tái)程序中,標(biāo)準(zhǔn)的OpenGL流程是這樣的:
int main(int argc, char *argv[])
{
  glutInitWindowSize(500, 250);
  glutInitWindowPosition ( 140, 140 );
  glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE );
  glutInit(&argc, argv);
  glutCreateWindow( "Demo" );
  glClearColor(1.0, 1.0, 1.0, 1.0);
  glutDisplayFunc( Display );
  glutReshapeFunc( Reshape );
  glutMouseFunc ( Mouse ) ;
  glutMotionFunc ( Motion ) ;
  glutKeyboardFunc( Key );
  glutMainLoop();
  return 0;
}
而在MFC的對(duì)話框程序中,使用這樣的流程,可能會(huì)出現(xiàn)內(nèi)存的泄漏的問(wèn)題,究其原因,是因?yàn)間lutMainLoop()  阻斷了系統(tǒng)的正常流程,在關(guān)閉glutCreateWindow()創(chuàng)建的窗口后,glutMainLoop()直接用exit(0)退出程序,而不會(huì)繼續(xù)執(zhí)行g(shù)lutMainLoop()后的語(yǔ)句,這就使一些類的釋放及資源回收工作無(wú)法進(jìn)行,從而造成內(nèi)存泄漏。糾正此問(wèn)題,有3個(gè)辦法:
1、使用glutLeaveMainLoop()代替glutMainLoop()。
2、處理代碼中exit(0)的部分。
3、在glutMainLoop之前先設(shè)置:
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);
然后再用glutMainLoop();則 glutMainLoop()會(huì)在退出后,繼續(xù)執(zhí)行其后的代碼。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多