日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Win32 像素格式描述符学习

發布時間:2025/4/14 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 像素格式描述符学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。