На главную

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

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

PIXELFORMATDESCRIPTOR



typedef struct tagPIXELFORMATDESCRIPTOR { // pfd

WORD nSize;
WORD nVersion;
DWORD dwFlags;
BYTE iPixelType;
BYTE cColorBits;
BYTE cRedBits;
BYTE cRedShift;
BYTE cGreenBits;
BYTE cGreenShift;
BYTE cBlueBits;
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;
BYTE cStencilBits;
BYTE cAuxBuffers;

BYTE iLayerType;
BYTE bReserved;
DWORD dwLayerMask;
DWORD dwVisibleMask;
DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR;


The PIXELFORMATDESCRIPTOR structure describes the pixel format of a drawing surface.

Members

nSize

Specifies the size of this data structure. This value should be set to sizeof(PIXELFORMATDESCRIPTOR).

nVersion

Specifies the version of this data structure. This value should be set to 1.

dwFlags

A set of bit flags that specify properties of the pixel buffer. The properties are generally not mutually exclusive; an application can set any combination of bit flags, with the exceptions noted. The following bit flag constants are defined:

Value Meaning
PFD_DRAW_TO_WINDOW The buffer can draw to a window or device surface.
PFD_DRAW_TO_BITMAP The buffer can draw to a memory bitmap.
PFD_SUPPORT_GDI The buffer supports GDI drawing. This flag and PFD_DOUBLEBUFFER are mutually exclusive in the current generic implementation.
PFD_SUPPORT_OPENGL The buffer supports OpenGL drawing.
PFD_GENERIC_FORMAT The pixel format is supported by the GDI software implementation. That implementation is also known as the generic implementation. If this bit is clear, the pixel format is supported by a device driver or hardware.
PFD_NEED_PALETTE The buffer uses RGBA pixels on a palette-managed device. A logical palette is required to achieve the best results for this pixel type. Colors in the palette should be specified according to the values of the cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits, and cBlueShift members. The palette should be created and realized in the device context (DC) before calling wglMakeCurrent.
PFD_NEED_SYSTEM_PALETTE Used with systems with OpenGL hardware that supports one hardware palette only. For such systems to use hardware acceleration, the hardare palette must be in a fixed order (for example, 3-3-2) when in RGBA mode or must match the logical palette when in color-index mode. When you set this flag, you should call SetSystemPaletteUse in your program to force a one-to-one mapping of the logical palette and the system palette. If your OpenGL harware supports multiple hardware palettes and the device driver can allocate spare hardware palettes for OpenGL, you don't need to set PFD_NEED_SYSTEM_PALETTE.This flag is not set in the generic pixel formats.
PFD_DOUBLEBUFFER The buffer is double-buffered. This flag and PFD_SUPPORT_GDI are mutually exclusive in the current generic implementation.
PFD_STEREO The buffer is stereoscopic. This flag is not supported in the current generic implementation.


In addition, the following bit flags can be specified when calling ChoosePixelFormat:

Value Meaning
PFD_DOUBLE_BUFFER_DONTCARE The requested pixel format can be either single- or double-buffered.
PFD_STEREO_DONTCARE The requested pixel format can be either monoscopic or stereoscopic.


With the glAddSwapHintRectWIN extension function two new flags are included for the PIXELFORMATDESCRIPTOR pixel format structure:

Value Meaning
PFD_SWAP_COPY Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the back-buffer content to be copied to the front buffer. The content of the back buffer is not affected by the swap. PFD_SWAP_COPY is a hint only and might not be provided by a driver.
PFD_SWAP_EXCHANGE Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the exchange of back-buffer content with the front-buffer content. Following the swap, the back-buffer content contains the front-buffer content before the swap. PFD_SWAP_EXCHANGE is a hint only and might not be provided by a driver.


iPixelType

Specifies the type of pixel data. The following types are defined:

Value Meaning
PFD_TYPE_RGBA RGBA pixels. Each pixel has four components: red, green, blue, and alpha.
PFD_TYPE_COLORINDEX Color index pixels. Each pixel uses a color index value


cColorBits

Specifies the number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer excluding the alpha bitplanes. For color index pixels, it is the size of the color index buffer.

cRedBits

Specifies the number of red bitplanes in each RGBA color buffer.

cRedShift

Specifies the shift count for red bitplanes in each RGBA color buffer.

cGreenBits

Specifies the number of green bitplanes in each RGBA color buffer.

cGreenShift

Specifies the shift count for green bitplanes in each RGBA color buffer.

cBlueBits

Specifies the number of blue bitplanes in each RGBA color buffer.

cBlueShift

Specifies the shift count for blue bitplanes in each RGBA color buffer.

cAlphaBits

Specifies the number of alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported.

cAlphaShift

Specifies the shift count for alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported.

cAccumBits

Specifies the total number of bitplanes in the accumulation buffer.

cAccumRedBits

Specifies the number of red bitplanes in the accumulation buffer.

cAccumGreenBits

Specifies the number of green bitplanes in the accumulation buffer.

cAccumBlueBits

Specifies the number of blue bitplanes in the accumulation buffer.

cAccumAlphaBits

Specifies the number of alpha bitplanes in the accumulation buffer.

cDepthBits

Specifies the depth of the depth (z-axis) buffer.

cStencilBits

Specifies the depth of the stencil buffer.

cAuxBuffers

Specifies the number of auxiliary buffers. Auxiliary buffers are not supported.

iLayerType

Specifies the type of layer. Although the following values are defined, the current version supports only the main plane (there is no support for overlay or underlay planes):

Value Meaning
PFD_MAIN_PLANE The layer is the main plane.
PFD_OVERLAY_PLANE The layer is the overlay plane.
PFD_UNDERLAY_PLANE The layer is the underlay plane.


bReserved

Not used. Must be zero.

dwLayerMask

Specifies the layer mask. The layer mask is used in conjunction with the visible mask to determine if one layer overlays another.

dwVisibleMask

Specifies the visible mask. The visible mask is used in conjunction with the layer mask to determine if one layer overlays another. If the result of the bitwise-AND of the visible mask of a layer and the layer mask of a second layer is nonzero, then the first layer overlays the second layer, and a transparent pixel value exists between the two layers. If the visible mask is 0, the layer is opaque.

dwDamageMask

Specifies whether more than one pixel format shares the same frame buffer. If the result of the bitwise-AND of the damage masks between two pixel formats is non-zero, then they share the same buffers.

Remarks

Please notice carefully, as documented above, that certain pixel format properties are not supported in the current generic implementation. The generic implementation is the Microsoft GDI software implementation of OpenGL. Hardware manufacturers may enhance parts of OpenGL, and may support some pixel format properties not supported by the generic implementation.

See Also

ChoosePixelFormat, DescribePixelFormat, GetPixelFormat, SetPixelFormat


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

PIXELFORMATDESCRIPTOR



typedef struct tagPIXELFORMATDESCRIPTOR { // pfd

СЛОВО nSize;
СЛОВО nVersion;
DWORD dwFlags;
БАЙТ iPixelType;
БАЙТ cColorBits;
БАЙТ cRedBits;
БАЙТ cRedShift;
БАЙТ cGreenBits;
БАЙТ cGreenShift;
БАЙТ cBlueBits;
БАЙТ cBlueShift;
БАЙТ cAlphaBits;
БАЙТ cAlphaShift;
БАЙТ cAccumBits;
БАЙТ cAccumRedBits;
БАЙТ cAccumGreenBits;
БАЙТ cAccumBlueBits;
БАЙТ cAccumAlphaBits;
БАЙТ cDepthBits;
БАЙТ cStencilBits;
БАЙТ cAuxBuffers;

БАЙТ iLayerType;
БАЙТ bReserved;
DWORD dwLayerMask;
DWORD dwVisibleMask;
DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR;


Структура PIXELFORMATDESCRIPTOR описывает формат пикселя чертежа поверхности.

Участники

nSize

Определяет размер этой структуры данных. Эта величина должна быть установлена, чтобы sizeof(PIXELFORMATDESCRIPTOR).

nVersion

Определяет версию этой структуры данных. Эта величина должна быть установлена на 1.

dwFlags

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

Значение Величины
PFD_DRAW_TO_WINDOW буфер может сделать на поверхность окна или устройства.
PFD_DRAW_TO_BITMAP буфер может сделать в побитовое отображение памяти.
PFD_SUPPORT_GDI буфер поддерживает чертеж GDI. Этот флаг и PFD_DOUBLEBUFFER взаимно исключительный в текущей общей реализации.
PFD_SUPPORT_OPENGL буфер поддерживает чертеж OpenGL.
PFD_GENERIC_FORMAT формат пикселя поддерживан программной реализацией GDI. Эта реализация также известный как общая реализация. Если этот бит ясен, формат пикселя поддерживан драйвером устройства или аппаратных средств.
PFD_NEED_PALETTE буфер использует пиксели RGBA на управляющем устройстве палитры. Требуется, чтобы логическая палитра достигла наилучших результатов для этого типа пикселя. Цвета в палитре должны быть определены согласно величины cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits, и участники cBlueShift. Палитра должна быть создана и реализована в контексте устройства (DC) перед вызовом wglMakeCurrent.
PFD_NEED_SYSTEM_PALETTE Использовался системами с аппаратными средствами OpenGL, которые поддерживают одну аппаратную палитру только. Для таких систем, чтобы использовать аппаратное ускорение, палитра hardare должна быть в фиксированном порядке (например, 3-3-2) когда в режиме RGBA или должно соответствовать логической палитре когда в цветном-индексном режиме. Когда Вы установили этот флаг, Вы должны называть SetSystemPaletteUse в вашей программе, чтобы заставлять взаимно-однозначное распределение логической палитры и системная палитра. Если ваши OpenGL harware многочисленные аппаратные палитры опор и драйвер устройства может распределить свободные аппаратные палитры для OpenGL, Вам не нужно устанавливать флаг PFD_NEED_SYSTEM_PALETTE.This не установлен в общих форматах пикселя.
PFD_DOUBLEBUFFER буфер буферизован двойное количество. Этот флаг и PFD_SUPPORT_GDI взаимно исключительный в текущей общей реализации.
PFD_STEREO буфер стереоскопический. Этот флаг не поддерживан в текущей общей реализации.


Кроме того, следующее бита сигнализирует может быть определено при вызове ChoosePixelFormat:

Значение Величины
PFD_DOUBLE_BUFFER_DONTCARE запрошенный формат пикселя может быть или единственное- или буферное двойное количество.
PFD_STEREO_DONTCARE запрошенный формат пикселя может быть или monoscopic или стереоскопический.


С функцией расширения glAddSwapHintRectWIN два новых флага включены для структуры формата пикселя PIXELFORMATDESCRIPTOR:

Значение Величины
PFD_SWAP_COPY Определяет содержимое обратного буфера на буферной двойной основной цветовой плоскости, следующей за буферной подкачкой (свопинг). Свопинг цветные причины буферов обратное-буферное содержимое, чтобы быть скопированн на внешнюю сторону буфера. Содержимое обратного буфера не поражено подкачкой (свопинг). PFD_SWAP_COPY - намек только и не мог предусматриван драйвером.
PFD_SWAP_EXCHANGE Определяет содержимое обратного буфера на буферной двойной основной цветовой плоскости, следующей за буферной подкачкой (свопинг). Свопинг цветных буферов вызывает обмен обратного-буферного содержимого с внешним сторона-буферным содержимым. Следуя за подкачкой (свопинг), обратное-буферное содержимое содержит внешнее сторона-буферное содержимое перед подкачкой (свопинг). PFD_SWAP_EXCHANGE - намек только и не мог предусматриван драйвером.


iPixelType

Определяет тип данных пикселя. Следующие типы определены:

Значение Величины
пиксели PFD_TYPE_RGBA RGBA. Каждый пиксель имеет четыре компонента: красный, зеленый, синий, и буквенный.
индексные пиксели Цвета PFD_TYPE_COLORINDEX. Каждый пиксель использует цветную индексную величину


cColorBits

Определяет номер цвета bitplanes в каждом цветном буфере. Для типов пикселя RGBA, это - размер цветного буфера, исключающего альфу bitplanes. Для цветных индексных пикселей, это - размер цветного индексного буфера.

cRedBits

Определяет число красных bitplanes в каждом цветном буфере RGBA.

cRedShift

Определяет что сдвиг имеет значение красные bitplanes в каждом цветном буфере RGBA.

cGreenBits

Определяет число зеленых bitplanes в каждом цветном буфере RGBA.

cGreenShift

Определяет что сдвиг имеет значение зеленые bitplanes в каждом цветном буфере RGBA.

cBlueBits

Определяет число синих bitplanes в каждом цветном буфере RGBA.

cBlueShift

Определяет что сдвиг имеет значение синие bitplanes в каждом цветном буфере RGBA.

cAlphaBits

Определяет номер альфы bitplanes в каждом цветном буфере RGBA. Альфа bitplanes не поддерживана.

cAlphaShift

Определяет что сдвиг имеет значение альфу bitplanes в каждом цветном буфере RGBA. Альфа bitplanes не поддерживана.

cAccumBits

Определяет общее число bitplanes в буфере накопления.

cAccumRedBits

Определяет число красных bitplanes в буфере накопления.

cAccumGreenBits

Определяет число зеленых bitplanes в буфере накопления.

cAccumBlueBits

Определяет число синих bitplanes в буфере накопления.

cAccumAlphaBits

Определяет номер альфы bitplanes в буфере накопления.

cDepthBits

Определяет глубину глубины (z-axis) буфера.

cStencilBits

Определяет глубину буфера шаблона.

cAuxBuffers

Определяет количество вспомогательных буферов. Вспомогательные буферы не поддерживаны.

iLayerType

Определяет тип слоя. Хотя следующие величины определены, текущая версия поддерживает только основную плоскость (нет поддержки для оверлей или полежавшей в основе планов):

Значение Величины
PFD_MAIN_PLANE слой является основной плоскостью.
PFD_OVERLAY_PLANE слой является оверлейной плоскостью.
PFD_UNDERLAY_PLANE слой является полежать в основе плоскости.


bReserved

Не использованное. Должно - нулевым.

dwLayerMask

Определяет маску слоя. Маска слоя использована в связи (вместе)с видимой маской, чтобы определяться если один слой перекрывает другой.

dwVisibleMask

Определяет видимую маску. Видимая маска использована в связи (вместе)с маской слоя, чтобы определяться если один слой перекрывает другой. Если результат поразрядного-И видимой маски слоя и маска слоя слоя секунды ненулевое, тогда первый слой перекрывает второй слой, и прозрачная величина пикселя существует между двумя слоями. Если видимая маска - 0, слой непрозрачный.

dwDamageMask

Определяет независимо более, чем одним акциям формата пикселя тот же фреймовый буфер. Если результат поразрядного-И аварийных масок между двумя форматами пикселя - не равным нулю, тогда они распространяют те же буферы.

Замечания

Пожалуйста обратите внимание тщательно, в соответствии с описанием выше, что свойства формата определенный пиксель не поддерживан в текущей общей реализации. Общая реализация является программной реализацией Микрософт GDI OpenGL. Аппаратные изготовители могут повысить части OpenGL, и могут поддержать некоторые свойства формата пикселя не поддерживанное общей реализацией.

Смотри Также

ChoosePixelFormat, DescribePixelFormat, GetPixelFormat, SetPixelFormat


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