欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Win32 像素格式描述符学习

发布时间:2025/4/14 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Win32 像素格式描述符学习 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

像素格式(PIXELFORMATDESCRIPTOR)明确了OpenGL绘制平面的特性,如象素缓冲区是单缓冲还是双缓冲,数据是 RGBA方式还是Color Index方式等。
每个OpenGL显示设备都支持一种指定的像素格式。一般用一个名为PIXELFORMATDESCRIPTOR的结构来表示某个特殊的像素格式,这个结构包含26个属性信息。Win32定义PIXELFORMATDESCRIPTOR如下所示:

typedef struct tagPIXELFORMATDESCRIPTOR
  {
    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;

前两个成员,结构体大小,版本;
第三个成员,多个标志 | 起来;
具体参阅:

https://docs.microsoft.com/en-us/previous-versions//ms537569(v=vs.85)?redirectedfrom=MSDN

bReserved只能设为0,
最后三个变量Windows 95都不支持,故全设置为0;

The PIXELFORMATDESCRIPTOR structure describes the pixel format of a drawing surface.
像素格式描述符结构体描述了一个绘图表面的像素格式。

iLayerType
Ignored. Earlier implementations of OpenGL used this member, but it is no longer used.
倒数第五个成员;早期OpenGL版本使用这个成员,它已不再使用;
 

VC++ 2012,新建一个单文档工程;

先初始化此结构体;把返回地址选择进设备描述表;然后才能进行后续的绘图;

看一下是否初始化成功;把相关返回值输出一下;

void CpixeltestView::OnDraw(CDC* pDC) {CpixeltestDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为本机数据添加绘制代码CDC* pmyDC;CString str1;PIXELFORMATDESCRIPTOR pfd ={sizeof(PIXELFORMATDESCRIPTOR),1,PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER, PFD_TYPE_RGBA,24,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,PFD_MAIN_PLANE,0,0,0,0};str1.Format(_T("%x"), pfd);pDC->TextOutW(50, 50, str1);pmyDC = new CClientDC(this);int pixelFormat = ChoosePixelFormat(pmyDC->GetSafeHdc(), &pfd);str1.Format(_T("%x"), pmyDC);pDC->TextOutW(50, 80, str1);str1.Format(_T("%d"), pixelFormat);pDC->TextOutW(50, 110, str1); }

运行如下;

 

总结

以上是生活随笔为你收集整理的Win32 像素格式描述符学习的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。