现在的位置: 首页 > 综合 > 正文

WGL函数翻译

2017年12月11日 ⁄ 综合 ⁄ 共 3320字 ⁄ 字号 评论关闭

http://msdn.microsoft.com/en-us/library/windows/desktop/ee872083(v=vs.85).aspx

wglShareLists

wglShareLists函数能使多个OpenGL渲染上下文共享同一个显示列表空间。

语法

BOOL WINAPI wglShareLists(

  HGLRC hglrc1,

  HGLRC hglrc2

);

参数

hglrc1

指定一个要共享其显示列表的OpenGL渲染上下文。

hglrc2

指定OpenGL渲染上下文,共享hglrc1中的显示列表。当使用wglShareLists函数时,hglrc2参数不能包含任何存在的显示列表。

注意

当你创建一个OpenGL渲染上下文,它会有一个属于自己的显示列表空间。函数能使一个OpenGL渲染上下文共享显示列表空间给其它的OpenGL渲染上下文。 任意个渲染上下文可以共享各自唯一的显示列表空间。一旦渲染上下文共享了显示列表空间,此渲染上下文使用此显示列表空间,直到此渲染上下文被删除。当最后的共享了显示列表空间的渲染上下文被删除后,显示列表空间被删除。在显示列表空间中定义的显示列表和所有索引被共享。

你只能在同一进程中共享显示列表。然而,不是所有在同一进程中的渲染上下文都可以共享显示列表。只有当它们使用同样的OpenGL函数的实现时,OpenGL渲染上下文才能共享。All client rendering contexts of a given pixel format can always share display lists.

所有共享显示列表的渲染上下文必须使用同样的像素格式。否则结果依赖于OpenGL的具体实现。

wglGetCurrentDC 函数得到了指向设备上下文的句柄,此句柄关联到调用线程的当前OpenGL渲染上下文 

语法

HDC WINAPI wglGetCurrentDC(void);

返回值

如果调用线程有当前OpenGL渲染上下文,此函数返回一个句柄。它指向与之相联的渲染上下文。这个渲染上下文可使用wglMakeCurrent函数指定。如果没有,则返回NULLI

Remarks注意

当调用wglMakeCurrent函数,你就关联了一个OpenGL渲染上下文。你可以使用wglGetCurrentContext得到调用线程的当前的OpenGL渲染上下文句柄。

 wglCopyContext函数复制从一个OpenGL渲染上下文中选中的一组渲染状态到另一个渲染上下文中。 

语法

BOOL WINAPI wglCopyContext(

  HGLRC hglrcSrc,

  HGLRC hglrcDst,

  UINT mask

);

参数

hglrcSrc

指定一个复制源

hglrcDst

指定一个复制目的地

mask

指定hglrcStrc中要复制的渲染状态组。它包含了bitwise-OR 可传给函数glPushAtrib。你可以使用 GL_ALL_ATTRIB_BITS 来复制所有的渲染上下文状态信息。

Return value返回值

如果此函数成功,返回true。如果函数失败,返回falseI

Remarks

使用wglCopyContext函数,你可以同步两个渲染上下文的渲染状态。你只能在同一进程中复制两个渲染上下文的状态。渲染上下文必须源于同样的OpenGL实现。举个例子,你可以在两个渲染上下文间复制一个渲染状态,但两个渲染上下文要有同样的像素格式,必须在同一进程中。 你可以复制使用glPushAttrib 函数设置的状态,但不能复制如下状态信息:像素包装/解包状态,渲染模式状态,选择状态和反馈状态。

当你调用wglCopyContext时,你要确保hglrcDst不是任何线程的当前渲染渲染上下文。


wglCreateContext函数创建了一个新的OpengGL渲染上下文,此上下文与hdc代表的设备上下文件配套。

OpenGL渲染上下文与hdc设备上下文有相同的像素格式。

语法

HGLRC WINAPI wglCreateContext(

  HDC hdc

);

参数

hdc

Handle to a device context for which the function creates a suitable OpenGL rendering context.

Return value

If the function succeeds, the return value is a valid handle to an OpenGL rendering context.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

注意

一个渲染上下文不能有相同的设备上下文。在创建一个渲染上下文之前,要设置设备上下文的像素格式。更多的设置设备上下文像素格式的信息,参见SetPixelFormat函数。

为了使用OpenGL,你创建了一个渲染上下文,选择它为线程的当前渲染上下文,然后调用OpenGL函数。当你结束渲染上下文时,你可以使用wglDeleteContext函数释放它。

下面代码展示wglCreateContext使用方法。

HDC    hdc; 
HGLRC  hglrc; 
 
// create a rendering context  
hglrc = wglCreateContext (hdc); 
 
// make it the calling thread's current rendering context 
wglMakeCurrent (hdc, hglrc);
 
// call OpenGL APIs as desired ... 
 
// when the rendering context is no longer needed ...   
 
// make the rendering context not current  
wglMakeCurrent (NULL, NULL) ; 
 
// delete the rendering context  
wglDeleteContext (hglrc);

wglMakeCurrent函数使一个OpenGL渲染上下文为调用线程当前渲染上下文。所以随后的在此线程中的OpenGL调用,在hdc上绘制图形。你可以使用wglMakeCurrent函数来改变调用线程当前的渲染上下文。

语法

BOOL WINAPI wglMakeCurrent(

  HDC hdc,

  HGLRC hglrc

);

参数

hdc

设备上下文的句柄。之后的调用线程中的OpenGL函数,在hdc对应的设备上下文中绘制图形。

hglrc

OpenGL渲染上下文句柄。此函数设置了调用线程的渲染上下文。如果hglrcNULL,此函数使调用当前线程的前当渲染上下文不再在当前的上下文。并且释放被使OpenGL渲染上下文使用的设备上下文。

注意

The hdc parameter must refer to a drawing surface supported by OpenGL. 它不要求与在此hglrc创建时传给wglCreateContext函数的那个hdc相同的hdcbut it must be on the same device and have the same pixel format. GDI的变换及裁剪不被渲染上下文支持。当前的渲染上下文使用hdc设备上下文直到此渲染上下文不是当前渲染上下文。在切换到一个新的渲染上下文之前,OpenGL冲掉调用线程的任何先前的渲染上下文。

一个线程可以有一个当前渲染上下文。一个进程通过使用多个线程,可以有多个渲染上下文。在调用任何一个OpenGL函数之前,线程必须设置一个当前渲染上下文。

在同一时刻内,一个线程只能设置一个渲染上下文。你不能设置一个渲染上下文为多个线程的当前渲染上下文。一个程序可以多线程绘制图形,使用不同的渲染上下文为不同线程的当前渲染上下文,提供每一个线程它自己的渲染上下文和设备上下文。

抱歉!评论已关闭.