//The function exchanges the front and back buffers.
SwapBuffers(m_pDC->GetSafeHdc());

解决方案 »

  1.   

    回楼上,怎么让OpenGL不建立自己的窗口啊,我之前写的程序都是OpenGL建立自己的窗口的。
      

  2.   

    SwapBuffers(m_pDC->GetSafeHdc());
    试试能不能 给他一个 内存 DC, memDC
    然后 在内存dc中 你 修改 后, 再 复制 到 屏幕 DC
      

  3.   

    由于我OpenGL建模的程序是封装在一个类的,所以我现在有一个想法:
    利用多线程运行OpenGL建模程序,待到建模完成,把模型投影提取出来,经过处理,利用线程间通信,显示到主界面的hDC上。
    至于键盘事件的捕获,可以利用主界面捕获键盘命令,再利用线程通信,把所捕获的命令传到OpenGL建模程序中,来实现模型的旋转的操作。
    哎,表达有点模糊
      

  4.   

    “SwapBuffers(m_pDC->GetSafeHdc());”
    OpenGl 使用 双缓冲时,切换 缓冲 用的 , 表示 GL 已经 准备好 图了。
      

  5.   

    你好,今天开始了解了一下wgl,里边说opengl需要一个绘画环境,也就是RC(randering context).
    获取这个RC需要wglCreateContext(hDC),
    需要通过设备描述表CDC获取hDC,在设置像素格式,才能执行wglCreateContext。
    综上,也就是RC是依赖于一个窗口的?那有没有什么方法直接设置一个类似缓存的RC啊?就是不建立窗口的情况下,在缓存绘制opengl的图像,需要显示窗口的时候才把图像显示出来。
    非常感谢
      

  6.   

    这个RC 是从 hDC Create 来的。
    你 想 一开始 就 使用 memDC ?
    CDC memDC;
    memDC.CreateCompactibleDC(hDC);可以试试
      

  7.   

    发现使用CreateCompactibleDC这个函数的话,hDC还是需要一个窗体啊,如果设置成NULL的话,生成颜色描述表的时候会失败。
    现在的想法是弄两个RC,一个绑定要显示的界面,另外一个绑定一个隐藏的界面,使用的时候做两次渲染吧。
    而且多线程的话还挺麻烦,一个线程只能用当前线程的RC
      

  8.   

    “使用CreateCompactibleDC这个函数的话,hDC还是需要一个窗体啊”
    当然要 hDC ,这就是 兼容 !
    但 产生后 与 hDC 无关 了。hDC 可以 用 GetDC, 然后 ReleaseDC
      

  9.   

    这样啊,产生后就无关,谢谢了!不过还需要wglMakeCurrentContext,不过如果使用双缓冲应该没什么大碍