opengl的PIXELFORMATDESCRIPTOR
来源:互联网 发布:cda数据分析师报名时间 编辑:程序博客网 时间:2024/05/17 03:11
原文转自 http://hi.baidu.com/beyoar/item/4a74a89c26b80ede1f4271b6
表述像素格式:PIXELFORMATDESCRIPTOR
在OpenGL对窗口渲染之前,必须根据渲染需要对窗口进行配置。
需要硬件渲染还是软件渲染?
渲染使用单缓冲还是双缓冲?
是否需要深度缓冲区?
是否需要模板、目标Alpha或积累缓冲区?
当为窗口设置这些参数之后,就无法对它们进行修改。为了从一个只有深度缓冲和颜色缓冲区的窗口切换到一个带有模板缓冲区的窗口,必须首先销毁第一个窗口,然后根据需要重新创建一个窗口。
[ OpenGL]
PIXELFORMATDESCRIPTOR
The PIXELFORMATDESCRIPTOR structure describes the pixel format of a drawing surface.
typedef struct tagPIXELFORMATDESCRIPTOR
{ // pfd
WORD nSize; //结构大小: sizeof(PIXELFORMATDISCRIPTOR)
WORD nVersion; //版本:总设置为1
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;
//************************************************************************
//设置窗口像素格式
//************************************************************************
GLuint PixelFormat; // Holds The Results After Searching For A Match
static PIXELFORMATDESCRIPTOR pfd= // pfd Tells Windows How We Want Things To Be
{
sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor
1, // Version Number
PFD_DRAW_TO_WINDOW | // Format Must Support Window
PFD_SUPPORT_OPENGL | // Format Must Support OpenGL
PFD_DOUBLEBUFFER, // Must Support Double Buffering
PFD_TYPE_RGBA, // Request An RGBA Format
32, // Select Our Color Depth
0, 0, 0, 0, 0, 0, // Color Bits Ignored
0, // No Alpha Buffer
0, // Shift Bit Ignored
0, // No Accumulation Buffer
0, 0, 0, 0, // Accumulation Bits Ignored
16, // 16Bit Z-Buffer (Depth Buffer)
1, // No Stencil Buffer
0, // No Auxiliary Buffer
PFD_MAIN_PLANE, // Main Drawing Layer
0, // Reserved
0, 0, 0 // Layer Masks Ignored
};
if (!PixelFormat=ChoosePixelFormat(m_hDC,&pfd))) // Did Windows Find A Matching Pixel Format?
{
MessageBox("Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // Return FALSE
}
if(!SetPixelFormat(m_hDC,PixelFormat,&pfd)) // Are We Able To Set The Pixel Format?
{
MessageBox("Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // Return FALSE
}
.....
- opengl的PIXELFORMATDESCRIPTOR
- OpenGL像素格式-PIXELFORMATDESCRIPTOR
- PIXELFORMATDESCRIPTOR的结构
- PIXELFORMATDESCRIPTOR
- PIXELFORMATDESCRIPTOR
- PIXELFORMATDESCRIPTOR结构
- PIXELFORMATDESCRIPTOR说明
- 像素格式结构-PIXELFORMATDESCRIPTOR
- 像素格式结构-PIXELFORMATDESCRIPTOR
- PIXELFORMATDESCRIPTOR 像素格式描述表
- PIXELFORMATDESCRIPTOR 像素格式描述表
- opengl: Opengl的扩展
- opengl的
- 【OpenGL】OpenGL的函数库介绍
- OPENGL与OPENGL ES的区别
- opengl 基于MFC的OpenGL绘图原理
- OpenGL的帧缓存 OpenGL 管线
- OpenGL ES与OpenGL 的区别
- 8种Nosql数据库系统对比
- shell脚本----常用知识
- (九)模板方法模式详解(包含与类加载器不得不说的故事)
- Python标准库02 时间与日期 (time, datetime包)
- 重载new和delete方法实现C++内存安全
- opengl的PIXELFORMATDESCRIPTOR
- HEVC核心编码技术之一.图像的编码划分
- c#网络编程
- 一个真实的敏捷开发案例
- JAVA中的父类、子类转型
- Dev C++中的错误的解决[Linker error] undefined reference to `__cpu_features_init' -chu
- 围棋与OOAD
- C++学习笔记(五)
- VSRS3.5配置问题,error LINK2019 _cvInpaint error LINK1120