颜色深度PIXELFORMATDESCRIPTOR

时间:2013-09-23 00:59:28

标签: c winapi opengl pixelformat

我想知道在PIXELFORMATDESCRIPTOR对象中要更改哪些值来更改颜色深度。

根据OpenGL wiki,这就是为OpenGL上下文创建PIXELFORMATDESCRIPTOR对象的方法:

PIXELFORMATDESCRIPTOR pfd =
{
    sizeof(PIXELFORMATDESCRIPTOR),
    1,
    PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,    //Flags
    PFD_TYPE_RGBA,            //The kind of framebuffer. RGBA or palette.
    32,                        //Colordepth of the framebuffer.
    0, 0, 0, 0, 0, 0,
    0,
    0,
    0,
    0, 0, 0, 0,
    24,                        //Number of bits for the depthbuffer
    8,                        //Number of bits for the stencilbuffer
    0,                        //Number of Aux buffers in the framebuffer.
    PFD_MAIN_PLANE,
    0,
    0, 0, 0
};

但它有不同的变量影响颜色深度。

我需要更改哪些以相应地调整颜色深度?

1 个答案:

答案 0 :(得分:0)

第一个数字,在您的特定示例中为32,指定帧缓冲区可用的颜色位面数量。其他数字定义了用于每个组件的位平面数。将5-6-5像素格式放入32位平面帧缓冲区是完全可能的,这是一个有效的选择。

将PIXELFORMATDESCRIPTOR传递给ChoosePixelFormat时,值将作为最小值。但是,ChoosePixelFormat使用的算法可能无法为您所需的应用程序提供最佳结果。然后,可以更好地枚举所有可用的像素格式,并使用一组自定义规则从中进行选择。