游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3632|回复: 1

[提问]设置像素格式时PIXELFORMATDESCRIPTOR初始化问题

[复制链接]

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2010-3-24 11:55:00 | 显示全部楼层 |阅读模式
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;

在网上无数的示例代码中对PIXELFORMATDESCRIPTOR的初始话几乎都是把

  BYTE  cRedBits;
  BYTE  cRedShift;
  BYTE  cGreenBits;
  BYTE  cGreenShift;
  BYTE  cBlueBits;
  BYTE  cBlueShift;
  BYTE  cAlphaBits;
  BYTE  cAlphaShift;

全部设置成0, 而不管cColorBits是多少,哪怕是32位的。

当然,我也看到过代码中把这几个值填上的情况,比如:

PIXELFORMATDESCRIPTOR pixelDesc;
 pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);
  pixelDesc.nVersion = 1;
  pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW |  PFD_DRAW_TO_BITMAP |  PFD_SUPPORT_OpenGL |  PFD_SUPPORT_GDI |      PFD_STEREO_DONTCARE;

   pixelDesc.iPixelType = PFD_TYPE_RGBA;
   pixelDesc.cColorBits = 32;
   pixelDesc.cRedBits = 8;
   pixelDesc.cRedShift = 16;
   pixelDesc.cGreenBits = 8;
   pixelDesc.cGreenShift = 8;
   pixelDesc.cBlueBits = 8;
   pixelDesc.cBlueShift = 0;

   pixelDesc.cAlphaBits = 0;
   pixelDesc.cAlphaShift = 0;

   pixelDesc.cAccumBits = 64;
   pixelDesc.cAccumRedBits = 16;
   pixelDesc.cAccumGreenBits = 16;
   pixelDesc.cAccumBlueBits = 16;
   pixelDesc.cAccumAlphaBits = 0;

   pixelDesc.cDepthBits = 32;
   pixelDesc.cStencilBits = 8;

   pixelDesc.cAuxBuffers = 0;
   pixelDesc.iLayerType = PFD_MAIN_PLANE;
   pixelDesc.bReserved = 0;
   pixelDesc.dwLayerMask = 0;
   pixelDesc.dwVisibleMask = 0;
   pixelDesc.dwDamageMask = 0;

我想请教各位知道的同志,设置成0,是否对OPENGL应用程序来说有什么特殊意义?或者说OPENGL应用程序不关心这几个结构体成员的值?

Thanks in advance!

3

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2010-3-25 11:38:00 | 显示全部楼层

Re:[提问]设置像素格式时PIXELFORMATDESCRIPTOR初始化问题

我自己的看法是 当我们填好自己想要的PIXELFORMATDESCRIPTOR后,接下来在调用ChoosePixelFormat时,系统会根据我们传进去的PIXELFORMATDESCRIPTOR选一个最接近的像素格式返回,所以PIXELFORMATDESCRIPTOR填的越详细ChoosePixelFormat就能返回越接近我们所需要的像素格式。 那么具体这个被返回的像素格式到底是什么,可以通过DescribePixelFormat 来查看。不知道这个想法对不对。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-14 17:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表