На главную

On-line справка по OpenGL

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-L-M-N-O-P-R-S-T-U-V-W | Скачать Вниз

Rendering Context Functions



Five WGL functions manage rendering contexts:

WGL Function Description
wglCreateContext Creates a new rendering context.
wglMakeCurrent Sets a thread's current rendering context.
wglGetCurrentContext Obtains a handle to a thread's current rendering context.
wglGetCurrentDC Obtains a handle to the device context associated with a thread's current rendering context.
wglDeleteContext Deletes a rendering context.


An application creates a rendering context by calling wglCreateContext. The wglCreateContext function takes a device context handle as its parameter and returns a rendering context handle. The created rendering context is suitable for drawing on the device referenced by the device context handle. In particular, its pixel format is the same as the device context's pixel format. After the rendering context is created, an application can release or dispose of the device context. See the Device Contexts overview for more details on creating, obtaining, releasing, and disposing of a device context. One important note: the device context sent to wglCreateContext must be a display device context, a memory device context, or a color printer device context that uses four or more bits per pixel. The device context cannot be a monochrome printer device context.

An application gives a thread a current rendering context by calling wglMakeCurrent. The wglMakeCurrent function takes a rendering context handle and a device context handle as parameters. All subsequent OpenGL calls made by the thread are made through that rendering context, and are drawn on the device referenced by that device context. The device context does not have to be the same one passed to wglCreateContext when the rendering context was created, but it must be on the same device and have the same pixel format. The call to wglMakeCurrent creates an association between the supplied rendering context and device context. An application cannot release or dispose of the device context associated with a current rendering context until the rendering context is made not current.

Once a thread has a current rendering context, it can make OpenGL graphics calls. All calls must pass through a rendering context. Nothing happens if an application makes OpenGL graphics calls from a thread that lacks a current rendering context.
An application obtains a handle to a thread's current rendering context by calling wglGetCurrentContext. The wglGetCurrentContext function takes no parameters, and returns a handle to the calling thread's current rendering context. If the thread has no current rendering context, the return value is NULL.

An application obtains a handle to the device context associated with a thread's current rendering context by calling wglGetCurrentDC. As noted above, such associations are created when a rendering context is made current.
There are two ways for an application to break the association between a current rendering context and a thread: calling wglMakeCurrent with a null rendering context handle, and calling wglMakeCurrent with a handle other than the one originally called.

After calling wglMakeCurrent with the rendering context handle parameter set to NULL, the calling thread has no current rendering context. The rendering context is released from its connection to the thread, and the rendering context's association to a device context ends. OpenGL flushes all drawing commands, and may release some resources. No OpenGL drawing will be done until the next call to wglMakeCurrent, since the thread can make no OpenGL graphics calls until it regains a current rendering context.

The second way an application can break the association between a rendering context and a thread is to call wglMakeCurrent with a different rendering context. After such a call, the calling thread has a new current rendering context, the former current rendering context is released from its connection to the thread, and the former current rendering context's association to a device context ends.
An application deletes a rendering context by calling wglDeleteContext. The wglDeleteContext function takes a single parameter, the handle to the rendering context to be deleted. Before calling wglDeleteContext an application should make the rendering context not current by calling wglMakeCurrent, and delete or release the associated device context by calling DeleteDC or ReleaseDC as appropriate.

It is an error for a thread to delete a rendering context that is another thread's current rendering context. However, if a rendering context is the calling thread's current rendering context, wglDeleteContext will flush all OpenGL drawing commands and make the rendering context not current before deleting it. In this case, relying on wglDeleteContext to make a rendering context not current, it is the programmer's responsibility to delete or release the associated device context.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Предоставление Контекстных Функций



Пять функций WGL управляют предоставлением контекстов:

ФУНКЦИЯ WGL Description wglCreateContext Создает новое предоставление контекста.
wglMakeCurrent УСТАНАВЛИВАЕТ течение резьбы, предоставляющее контекст.
wglGetCurrentContext ПОЛУЧАЕТ ручку в течение резьбы, предоставляющее контекст.
wglGetCurrentDC ПОЛУЧАЕТ ручку в контекст устройства связанный течением резьбы, предоставляющим контекст.
wglDeleteContext УДАЛЯЕТ предоставляющий контекст.


Приложение создает предоставляющий контекст вызывая wglCreateContext. Функция wglCreateContext берет контекстную ручку устройства как параметр и возвращает предоставляющую контекстную ручку. Созданное предоставление контекста пригодное для чертежа на устройстве ссылавшемся контекстной ручкой устройства. В конкретном, формат пикселя такой же как и формат контекстного пикселя устройства. После того, как предоставляющий контекст будет создан, приложение может выпустить или избавляться от контекста устройства. Смотри обзор Контекстов Устройства если нужна дополнительная информация на создании, получающем, выпуская, и избавляясь от контекста устройства. Один важное примечание: контекст устройства посланный на wglCreateContext должен быть дисплейным контекстом устройства, контекст устройства памяти, или контекстом устройства цветного принтера, которые используют четыре или больше битов на пиксель. Контекст устройства не может быть контекстом устройства монохромного принтера.

Приложение дает резьбе течение, предоставляющее контекст вызывая wglMakeCurrent. Функция wglMakeCurrent берет предоставляющую контекстную ручку и контекстная ручка устройства как параметры. Все последующие вызовы OpenGL сделанные резьбой сделаны через это предоставление контекста и сделаны на устройстве ссылавшемся этим контекстом устройства. Контекст устройства нет должен быть тем же один пройденное на wglCreateContext когда предоставляющий контекст был создан, но это должно находиться на том же устройстве и иметь тот же формат пикселя. Вызов на wglMakeCurrent создает ассоциации между поставленным предоставлением контекстный и контекст устройства. Приложение не может выпустить или избавляться от контекста устройства связанного течением, предоставляющим контекст пока предоставляющий контекст не не сделан течение.

Как только резьба имеет течение, предоставляющее контекст, она может сделать графическими вызовами OpenGL. Все вызовы должны пройти через предоставляющий контекст. Ничто не случается если приложение делает графическими вызовами OpenGL из резьбы, которая недостает течения, предоставляющего контекст.
Приложение получает ручку в течение резьбы, предоставляющее контекст вызывая wglGetCurrentContext. Функция wglGetCurrentContext не берет никакие параметры и возвращает ручку в течение резьбы вызова предоставляя контекст. Если резьба не имеет течение, предоставляющее контекст, обратная величина НЕДЕЙСТВИТЕЛЬНА.

Приложение получает ручку в контекст устройства связанный течением резьбы, предоставляющим контекст вызывая wglGetCurrentDC. Как упомянуто выше, такие ассоциации созданы когда предоставляющий контекст сделан течение.
Есть два пути для приложения, чтобы прерывать ассоциацию между течением, предоставляющим контекст и резьба: вызов wglMakeCurrent с контекстной ручкой недействительного предоставления, и вызывая wglMakeCurrent с ручкой кроме один первоначально названное.

После вызова wglMakeCurrent с предоставляющим контекстным параметром ручки установленным на НЕДЕЙСТВИТЕЛЬНЫЙ, вызывающая резьба не имеет течение, предоставляющее контекст. Предоставляющий контекст выпущен от своей связи до резьбы, и контекстной ассоциации предоставления в контекстные концы устройства. OpenGL СБРАСЫВАЕТ весь чертеж команд, и может выпустить некоторые ресурсы. Никакое OpenGL, рисующее будет сделан до следующего вызова на wglMakeCurrent, с тех пор как резьба может не сделать никакими графическими вызовами OpenGL до, она восстанавливает течение, предоставляющее контекст.

Второй путь приложение может прервать ассоциацию между предоставляющим контекстом и резьба должна называть wglMakeCurrent с другим предоставлением контекста. После такого вызова, вызывающая резьба имеет новое течение, предоставляющее контекст, прежнее течение, предоставляющие контекст выпущены от своей связи до резьбы, и прежнего течения, предоставляющих контекстную ассоциацию в контекстные концы устройства.
Приложение удаляет предоставляющий контекст вызывая wglDeleteContext. Функция wglDeleteContext берет единственный параметр, ручка в предоставляющий контекст, который нужно удаляться. Прежде, чем вызов wglDeleteContext приложение должно сделать предоставляющим контекстом не течение вызывая wglMakeCurrent и удалять или выпускать связанный контекст устройства вызывая DeleteDC или ReleaseDC как подходящий.

Это - ошибка для резьбы, чтобы удалять предоставляющий контекст, который - другое течение резьбы, предоставляющее контекст. Тем не менее, если предоставляющий контекст является течением резьбы вызова, предоставляющим контекст, wglDeleteContext сбросит все OpenGL, рисующее приказывает и делает предоставляющим контекстом не течение перед удалять это. В этом случае, доверяющемся на wglDeleteContext, чтобы делать предоставляющим контекстом не течение, это - ответственность программиста, чтобы удалять или выпускать связанный контекст устройства.


Вверх Version 1.1, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод Win32 API  Русский перевод OpenGL
 
Hosted by uCoz