* step1:
定义像素格式,
------------
static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR), // 结构体的大小
1, // 版本号
PFD_DRAW_TO_WINDOW | // 格式支持窗口
PFD_SUPPORT_OPENGL | // 格式支持OpenGL
PFD_DOUBLEBUFFER, // 支持双缓冲
PFD_TYPE_RGBA, // 申请RGBA格式
bits, // 像素色深
0,0,0,0,0,0, // 忽略的色彩位
0, // 无Alpha缓存
0, // 忽略ShiftBit
0, // 无累加缓存
0,0,0,0, // 忽略聚集位
16, // 16位深度缓存
0, // 无蒙板缓存
0, // 无辅助缓存
PFD_MAIN_PLANE, // 主绘图层
0, // 保留参数
0,0,0 // 忽略层遮罩
};
----------------
* step2:
根据当前设备环境(DC)选择与pfd匹配的像素显示格式
---------------
HDC hDC = GetDC(hWnd);
PixelFormat = ChoosePixelFormat(hDC,&pfd));
---------------
* step3:
若当前设备可以显示pfd指定的像素格式,则尝试设置像素格式
---------------
SetPixelFormat(hDC,PixelFormat,&pfd);
---------------
* step4:
正常设置像素格式以后,尝试取得着色描述表RC
---------------
HGLRC hRC = wglCreateContext(hDC);
---------------
* step5:
激活并使用当前着色描述表
---------------
wglMakeCurrent(hDC,hRC);
---------------
* additional things:
另外,用于绘图的窗体样式要设置为WS_CLIPCHILDREN,WS_CLIPSIBLINGS。例如:
---------------
BOOL CGLStartView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
return CView::PreCreateWindow(cs);
}
----------------
绘图结束后,要释放着色描述表,可以写在负责绘制GL的窗体类析构函数中
----------------
wglDeleteContext(m_hRC);
----------------
// **********************************************************