Пример #1
0
BOOL COpenGLView::SetupPixelFormat(void)
{
	::wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC);
	PIXELFORMATDESCRIPTOR pfd = { 
	    sizeof(PIXELFORMATDESCRIPTOR),    // pfd结构的大小 
	    1,                                // 版本号 
	    PFD_DRAW_TO_WINDOW |              // 支持在窗口中绘图 
	    PFD_SUPPORT_OPENGL |              // 支持 OpenGL 
	    PFD_DOUBLEBUFFER | PFD_STEREO_DONTCARE,// 双缓存模式 
	    PFD_TYPE_RGBA,                    // RGBA 颜色模式 
	    24,                               // 24 位颜色深度 
	    0, 0, 0, 0, 0, 0,                 // 忽略颜色位 
	    0,                                // 没有非透明度缓存 
	    0,                                // 忽略移位位 
	    0,                                // 无累加缓存 
	    0, 0, 0, 0,                       // 忽略累加位 
	    32,                               // 32 位深度缓存     
	    0,                                // 无模板缓存 
	    0,                                // 无辅助缓存 
	    PFD_MAIN_PLANE,                   // 主层 
	    0,                                // 保留 
	    0, 0, 0                           // 忽略层,可见性和损毁掩模 
	}; 	
	int pixelformat;
	pixelformat = ::ChoosePixelFormat(m_pDC->GetSafeHdc(), &pfd);//选择像素格式
	::SetPixelFormat(m_pDC->GetSafeHdc(), pixelformat, &pfd);	//设置像素格式
	if(pfd.dwFlags & PFD_NEED_PALETTE)
		SetLogicalPalette();	//设置逻辑调色板
	::wglMakeCurrent(m_pDC->GetSafeHdc(), NULL);
	return TRUE;
}
Пример #2
0
bool CLineComputeView::SetupPixelFormat()
{
    PIXELFORMATDESCRIPTOR *pfd = new PIXELFORMATDESCRIPTOR();
    pfd->nSize=sizeof(PIXELFORMATDESCRIPTOR);
    pfd->nVersion=1;
    pfd->dwFlags=PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL| PFD_DOUBLEBUFFER| PFD_STEREO_DONTCARE;
    pfd->iPixelType=PFD_TYPE_RGBA;
    pfd->cColorBits=32;
    pfd->cRedBits=8;
    pfd->cRedShift=16;
    pfd->cGreenBits=8;
    pfd->cGreenShift=8;
    pfd->cBlueBits=8;
    pfd->cBlueShift=0;
    pfd->cAlphaBits=0;
    pfd->cAlphaShift=0;
    pfd->cAccumBits=64;
    pfd->cAccumRedBits=16;
    pfd->cAccumGreenBits=16;
    pfd->cAccumBlueBits=16;
    pfd->cAccumAlphaBits=0;
    pfd->cDepthBits=32;
    pfd->cStencilBits=8;
    pfd->cAuxBuffers=0;
    pfd->iLayerType=PFD_MAIN_PLANE;
    pfd->bReserved=0;
    pfd->dwLayerMask=0;
    pfd->dwVisibleMask=0;
    pfd->dwDamageMask=0;
    //在COpenGLView中添加保护型的成员变量: int m_GLPixelIndex;CDC *m_pDC;     HPALETTE m_hPalette;HGLRC   m_hGLContext;

    //选择一个像素索引
    m_GLPixelIndex=::ChoosePixelFormat(m_pDC->GetSafeHdc(),pfd);
    if (m_GLPixelIndex == 0)
    {
        m_GLPixelIndex = 1;
        if (DescribePixelFormat(m_pDC->GetSafeHdc(), m_GLPixelIndex,sizeof(PIXELFORMATDESCRIPTOR), pfd)==0)
        {
            return FALSE;
        }
    }

    //设置像素索引
    if (::SetPixelFormat(m_pDC->GetSafeHdc(), m_GLPixelIndex, pfd) == FALSE)
    {
        return FALSE;
    }

    if (pfd->dwFlags & PFD_NEED_PALETTE)
    {
        SetLogicalPalette();       //有必要的话设置逻辑调色板
    }
    return TRUE;
}