Window平台的OpenGL - Wiggle函数
OpenGL是一个单纯的图形API接口,用户的交互和屏幕窗口处理都交给了操作系统去完成。为了和操作系统很好的配合,每一种系统都有自己对OpenGL的扩展,包括一些窗口管理和用户交互的一些函数。有必要提供一些设置缓存、颜色深度和其它一些绘图特征。
对于微软的Windows操作系统,这种紧密的关系包含在新的wiggle函数中,这些函数都以wgl为前缀,其中最常用的几个是:
1 HGLRC wglCreateContext(HDC hdc); 2 BOOL wglDeleteContext(HGLRC hglrc); 3 BOOL wglMakeCurrent(HDC hdc, HGLRC hglrc); 4 HGLRC wglGetCurrentContext(); 5 HDC wglGetCurrentDC();
下面对这些Wiggle函数作分别介绍:
1、函数wglCreateContext()
该函数输入一个GDI的设备句柄hdc,创建与这个设备相关联的OpenGL上下文。函数的原型如下:
HGLRC wglCreateContext(HDC hdc);
如果创建成功,则返回上下文的句柄,否则返回NULL。
在调用这个函数创建上下文之前,必须先调用函数SetPixelFormat()设置与设备相匹配的像素格式。
2、函数wglDeleteContext()
该函数用于删除一个OpenGL的上下文,函数的原型如下:
BOOL wglDeleteContext(HGLRC hglrc);
若删除成功,返回TRUE,否则返回FALSE。
3、函数wglMakeCurrent()
该函数将一个设备的OpenGL上下文设置为当前线程的OpenGL上下文,后续所有的OpenGL命令都发往这个上下文处理,并通过该上下文实现窗口场景的绘制。函数原型如下:
BOOL wglMakeCurrent(HDC hdc, HGLRC hglrc);
若成功设置,返回TRUE,否则,返回FALSE。
4、函数wglGetCurrentContext()
该函数用于获取线程中当前的OpenGL上下文。函数原型如下:
HGLRC wglGetCurrentContext();
返回当前线程中OpenGL上下文的句柄,若当前线程没有OpenGL上下文,则返回NULL。
5、函数wglGetCurrentDC()
该函数用于获取当前OpenGL上下文的设备句柄。函数原型如下:
HDC wglGetCurrentDC();
返回当前OpenGL上下文的设备句柄,若当前线程没有OpenGL上下文,则返回NULL。