为什么只有黑色的背景啊?我在上面画了一条线的,可是运行后只有黑色背景,上面什么都没有。谁能帮忙看下,高手们?
int CSinDou01View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO:  在此添加您专用的创建代码
myInitOpenGL(); 
return 0;
}void CSinDou01View::myInitOpenGL(void)
{ m_pDC =new CClientDC(this); //创建 DC
ASSERT(m_pDC != NULL);
if (!mySetupPixelFormat())//设定绘图的位图格式,函数下面列出
return; //创建一个上下文设备环境 
m_hRC = wglCreateContext(m_pDC->GetSafeHdc());  //将刚生成的设备上下文指针设为当前环境 
wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC);
}
bool CSinDou01View::mySetupPixelFormat(void)
{


static PIXELFORMATDESCRIPTOR pfd = 
{
sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
1, // version number
PFD_DRAW_TO_WINDOW | // support window
PFD_SUPPORT_OPENGL | // support OpenGL
PFD_DOUBLEBUFFER, // double buffered
PFD_TYPE_RGBA, // RGBA type
24, // 24-bit color depth
0, 0, 0, 0, 0, 0, // color bits ignored
0, // no alpha buffer
0, // shift bit ignored
0, // no accumulation buffer
0, 0, 0, 0, // accum bits ignored
32, // 32-bit z-buffer
0, // no stencil buffer
0, // no auxiliary buffer
PFD_MAIN_PLANE, // main layer
0, // reserved
0, 0, 0 // layer masks ignored
};
int pixelformat; 
if ( (pixelformat = ChoosePixelFormat(m_pDC->m_hDC, &pfd)) == 0 )
{
return false;

if (SetPixelFormat(m_pDC->m_hDC, pixelformat, &pfd) == FALSE)
{
return false;

//得到指定设备环境的象素模式索引
int n = ::GetPixelFormat(m_pDC->GetSafeHdc()); 
//根据上面得到的索引值来声明一个象素模式
::DescribePixelFormat(m_pDC->GetSafeHdc(), n, sizeof(pfd), &pfd); 
return true;}
void CSinDou01View::OnDraw(CDC* /*pDC*/)
{
CSinDou01Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码 wglMakeCurrent(m_pDC->m_hDC,m_hRC) ;
//清除颜色缓冲和深度缓冲 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glClearColor(0.0,1.0,1.0,1.0); 
glTranslated(0.0f,0.0f,-3.0f);//把物体沿(0,0,-1)方向平移
glColor3f(0.0, 1.0, 1.0);         glBegin(GL_LINES);
             glVertex3f(50, 50, 0);
             glVertex3f(500, 500, 0);
         glEnd(); glFinish(); 
//交换缓冲区数据 
SwapBuffers(wglGetCurrentDC()); }

解决方案 »

  1.   

    用OPENGL窗口画图的窗口,都要设定固定的风格的,具体什么风格,楼主上网查一下吧!
      

  2.   

    glColor3f(0.0, 1.0, 1.0);         glBegin(GL_LINES); 
                glVertex3f(50, 50, 0); 
                glVertex3f(500, 500, 0); 
            glEnd(); 
    改成
            glBegin(GL_LINES); 
                glColor3f(0.0, 1.0, 1.0); 
                glVertex3f(50, 50, 0); 
                glVertex3f(500, 500, 0); 
            glEnd(); 呢
      

  3.   

    gluPerspective设置了吗?如果没有当然没有显示了。
      

  4.   

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(0.2,0.2,0.2,0.0);//添加
    加了这么一句,背景色是可以变了,但是还是没有画的线显示
      

  5.   

    要重载OnErasebackground()函数,
    BOOL CUnderListView::OnEraseBkgnd(CDC* pDC)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    return TRUE;
    //return CView::OnEraseBkgnd(pDC);
    }就可以了