在VC的编译环境下用OpenGL进行三维仿真时出现这样一个问题:
当使用单缓冲模式的时候,用户区窗口的右边和下边没有黑边,
但是,
当使用双缓冲模式的时候,用户区窗口的右边和下边却出现了黑边,
为什么?该怎么解决?

解决方案 »

  1.   

    你是不是用黑色清空颜色缓存的?
    我估计你的glViewPort没有设为窗口大小
      

  2.   

    我用蓝色清空的。
    下面是我函数体的代码
    void CMyGLTestView::OnSize(UINT nType, int cx, int cy) 
    {
    CView::OnSize(nType, cx, cy); CMyGLTestDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc); double size = pDoc->GetLength() + pDoc->GetMaxRadius()*0.8;
    if(size != 0)
    {
    scaling = (float)size;
    } if(cy>0)
    {
    glViewport(0,0,cy,cx); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(cx<=cy)
    {
    glOrtho(-scaling,scaling,-scaling*(GLfloat)cy/(GLfloat)cx,
    scaling*(GLfloat)cy/(GLfloat)cx,-scaling,scaling);
    }
    else
    {
    glOrtho(-scaling,scaling,-scaling*(GLfloat)cy/(GLfloat)cx,
    scaling*(GLfloat)cy/(GLfloat)cx,-scaling,scaling);
    } glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }
    // glDrawBuffer(GL_BACK); 

    }
    肯请你的指教...
      

  3.   

    glViewport(0,0,cy,cx);这个我觉得应该是glViewport(0,0,cx,cy);  才对,不知道是不是这个原因,我的程序中都是cx在前,cy在后的,cx是窗口width,cy是窗口height希望你能找到原因:)
      

  4.   

    if(cx<=cy)
    {
    glOrtho(-scaling,scaling,-scaling*(GLfloat)cy/(GLfloat)cx,
    scaling*(GLfloat)cy/(GLfloat)cx,-scaling,scaling);
    }
    else
    {
    glOrtho(-scaling,scaling,-scaling*(GLfloat)cy/(GLfloat)cx,
    scaling*(GLfloat)cy/(GLfloat)cx,-scaling,scaling);
    }我觉得应该改为:
    if(cx<=cy)
    {
    glOrtho(-scaling,scaling,-scaling*(GLfloat)cy/(GLfloat)cx,
    scaling*(GLfloat)cy/(GLfloat)cx,-scaling,scaling);
    }
    else
    {
    glOrtho( -scaling*(GLfloat)cx/(GLfloat)cy,
    scaling*(GLfloat)cx/(GLfloat)cy,-scaling,scaling, -scaling,scaling);
    }否则if和else里东西一样了
      

  5.   

    1. Preface
      前几天,有一个网友寻找OpenGL显示曲面的方法,email到我这里。我把我的 wave 程序发给他了。不料我的程序使他喜出望外。这是我想到如果我的程序放到网上的话,会有更多的人能够更容易的看到我的代码,并且公容易的学习如何使用OpenGL。2. Contents
      请大家访问 http://www.betajin.com/alphasun/index.htm。请看其中的 Wave OpenGL 页面,在里面便可下载 wave 的源代码。以后我还会公布一些其它的程序源代码。希望能对大家有用。我的 MyProjects 有172个目录呢,并且有的workspace包含数个工程。另外,如果大家觉得本贴对你有用,还烦劳各位 up 一下,使得更多的人能够看得到。
    谢谢