回 帖 发 新 帖 刷新版面

主题:OPENGL中的glut函数

我用MFC做openGL遇到个问题
void CMiddleView::display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    Object(GL_RENDER);
    glFlush();

}


void CMiddleView::Draw()
{  
    
         glMatrixMode(GL_PROJECTION);  //!!
           glLoadIdentity();
         gluPerspective(30,cxx/cyy,1,100000); //!!
                glMatrixMode(GL_MODELVIEW);
          
                glutDisplayFunc([color=FF0000]&CMiddleView::display[/color]);
         glutMainLoop();
        
   }

出现错误'glutDisplayFunc' : cannot convert parameter 1 from 'void (__thiscall CMiddleView::*)(void)' to 'void (__cdecl *)(void)'
        There is no context in which this conversion is possible

红色部分应该怎么改?

回复列表 (共10个回复)

沙发

將display改為全局函數。

板凳


但是display里面的object函数又是这个类里的

3 楼

红字部分换成仅仅是DISPLAY不行吗?

4 楼


不行,也是这一类的错误

5 楼

用全局對象做數據交換。

6 楼


啥意思?

7 楼

glutDisplayFunc要求的参数是一个C风格的函数指针,不能用C++风格的成员函数指针。因此编译出错了。

用MFC的话,也许根本就不应该使用GLUT。
GLUT只是一个工具包,用于管理和控制窗口,它本身不是OpenGL的一部分。
如果使用MFC的话,本身就可以管理和控制窗口,也就不再需要GLUT了。

提示:在GLUT的文档中说,glutMainLoop这个函数不会返回。但楼主的CMiddleView::Draw这个函数如果不返回的话,恐怕也会有问题吧。

楼主不妨百度一下“MFC OpenGL”,或许就能找到解决方案。

8 楼


恩似乎是这样,我用其他没返回值的glut函数运行的时候就内存溢出了,想用glut函数主要是我做选择和反馈的时候想实时监控鼠标的位置,鼠标滑过的物体变下颜色,左键点击之后彻底变色。

9 楼

如果樓主只是為了學習GL,那可以用用GLUT,但如果是做實際開發,那還是放棄GLUT吧,效率太低下。

10 楼


现在老是hit=0,不知道是什么原因

我来回复

您尚未登录,请登录后再回复。点此登录或注册