像素格式明确了OpenGL绘制平面的特性,如象素缓冲区是单缓冲还是双缓冲,数据是 RGBA方式还是Color Index方式等。每个OpenGL显示设备一般用名为PIXELFORMATDESCRIPTOR的结构来表示某个的像素格式,这个结构包含26个属性信息。
结构体定义如下:
typedef struct tagPIXELFORMATDESCRIPTOR
{
WORD nSize; //定义数据结构体的大小,可以这样给值:pfd.nsize = sizeof(PIXELFORMATDESCRIPTOR)
WORD nVersion; //直接设置为1
DWORD dwFlags; //一系列位标识符,可以相互取或联接,具体有哪些功能标识符,查看MSDN
BYTE iPixelType; //定义像素数据的类型,是索引值(PFD_TYPE_COLORINDEX)还是RGBA值(PFD_TYPE_RGBA)
BYTE cColorBits; //每个颜色缓存中的位面数,如果是RGBA模式,除去alp
BYTE cRedBits; //颜色缓存中,红色信息所占用的位面数
BYTE cRedShift; //红色位面数在缓存区中的移位数,即移多少位可以找到红色的RGB信息
BYTE cGreenBits; //颜色缓存中,绿色信息所占用的位面数
BYTE cGreenShift; //绿色位面数在缓存区中的移位数,即移多少位可以找到绿色的RGB信息
BYTE cBlueBits; //颜色缓存中,蓝色信息所占用的位面数
BYTE cBlueShift; //蓝色位面数在缓存区中的移位数,即移多少位可以找到蓝色的RGB信息
BYTE cAlphaBits; //软件加速不支持, 颜色缓存中,alpha信息的位面数
BYTE cAlphaShift; //软件加速不支持, 颜色缓存中,alpha信息移位数
BYTE cAccumBits; //积累缓存中的总位面数
BYTE cAccumRedBits; //积累缓存中的红色信息位面数
BYTE cAccumGreenBits; //积累缓存中的绿色信息位面数
BYTE cAccumBlueBits; //积累缓存中的蓝色信息位面数
BYTE cAccumAlphaBits; //积累缓存中的alpha信息的位面数
BYTE cDepthBits; //深度缓存保存的深度值
BYTE cStencilBits; //模板缓存中保存的深度值
BYTE cAuxBuffers; //软件加速并不使用该项,辅助缓存区的数目
BYTE iLayerType; //1.0版本的OpenGL只能置为PFD_MAIN_PLANE
BYTE bReserved; //必须置为0
DWORD dwLayerMask;
DDWOR dwVisibleMask;
DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR;
;