为了大作业临时抱下佛脚
OnCreate
创建 OpenGL 的绘图设备。 OpenGL 绘图的机制是: 先用 OpenGL 的绘图上下文 Rendering Context (简称为 RC )把图画好,再把所绘结果通过 SwapBuffer() 函数传给 Window 的绘图上下文 Device Context (简记为 DC).要注意的是,程序运行过程中,可以有多个 DC,但只能有一个 RC。因此当一个 DC 画完图后,要立即释放 RC,以便其它的 DC 也使用。
int COpenGLPlatView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
CClientDC dc(this); //创建DC
PIXELFORMATDESCRIPTOR pfd;
memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));
pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cDepthBits = 32;
int pixelFormat = ChoosePixelFormat(dc.m_hDC, &pfd);
SetPixelFormat(dc.m_hDC, pixelFormat, &pfd);
m_hRC = wglCreateContext(dc.m_hDC); //创建RC
return 0;
}
OnDestroy
void COpenGLPlatView::OnDestroy()
{
CView::OnDestroy();
// TODO: 在此处添加消息处理程序代码
wglMakeCurrent(NULL, NULL);
wglDeleteContext(m_hRC); //删除RC
m_hRC = NULL;
}
OnSize
在OnSize()中一般用来设置视口和视锥,因为这些是和窗口大小相关的。基本操作包括设置视口,选择投影矩阵,设置模型视图矩阵。
void COpenGLPlatView::OnSize(UINT nType, int cx, int cy)
{
CView::