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 像素格式描述符学习相关推荐
- 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★
文章目录 一.导入 OpenGL 的两个头文件 二.链接 OpenGL 库 三.将 Windows 桌面窗口改成 OpenGL 窗口 四.获取窗口设备 五.设置像素格式描述符 六.设置像素格式 七.创 ...
- while的用法和格式描述符
一.常用:while(n–)的意思就是 1.先取n的值,判断是否为0,不是跳到第2步,是的话跳到第4步 2.不是那么n=n-1,然后执行while循环 3.再回到第一步 4.执行while循环后面的语 ...
- CVPR2020:端到端学习三维点云的局部多视图描述符
CVPR2020:端到端学习三维点云的局部多视图描述符 End-to-End Learning Local Multi-View Descriptors for 3D Point Clouds 论文地 ...
- openGL第四讲——像素格式管理
OpenGL基础技术讲座--像素格式管理 1.Windows下的调色板 OpenGL可以使用16色.256色.64K和16M真彩色.真彩模式下不需要调色板,而在16色模式下根本不可能得到较为满意的效果 ...
- python100例详解-几个小例子给你讲解Python中类的描述符
原标题:几个小例子给你讲解Python中类的描述符 学习 Python 这么久了,说起 Python 的优雅之处,能让我脱口而出的, Deor(描述符)特性可以排得上号. 描述符是Python 语言独 ...
- uvc摄像头代码解析之描述符
1.uvc驱动模块入口 module_init(uvc_init); //1.模块入口 2.初始化函数 static int __init uvc_init(void) // 2.初始化函数 {int ...
- UVC摄像头(2)驱动层——UVC描述符参数设置
接着上一篇UVC摄像头(1) composite_gadget_bind(cdev); 我们绑定它的函数是这个 webcam_bind(struct usb_composite_dev *cdev) ...
- 【OS学习笔记】十四 保护模式二:段描述符
上一篇文章初步进入保护模式的学习.首先学习了全局描述符表GDT.点击链接查看上一篇文章:全局描述符表 本篇文章继续学习,GDT中存放的条目:描述符,确切的说是段描述符.学习段描述符的作用以及段描述符的 ...
- USB学习3-USB描述符
本片博客是基于对韦东山老师的USB相关学习视频.<USB2.0>.<MindShare USB 3.0 Technology>.<vdocuments.mx_univer ...
最新文章
- 又见斐波那契数列(矩阵构造+矩阵快速幂)
- 剑指offer の 1-10 之javascript实现
- redisTemplate设置key零点过期,生成自增的单号
- linux文件系统_Linux的文件系统简介
- 面试官系统精讲Java源码及大厂真题 - 32 ReentrantLock 源码解析
- Nginx使用教程(七):使用Nginx缓存之proxy cache
- MySQL学生人数统计小案例
- 【报告分享】bilibili2020年营销通案:激活年轻营销力.pdf(附下载链接)
- Atitit.jsou html转换纯文本 java c# php
- 【撸大湿】Storm 分布式BP神经网络(开源)
- 使用OpenCV和Python进行人脸识别
- 1、字符串与数字相互转换
- 如何监测微信群关键词并收集转发到指定的群
- 埃克森尔科技参与IEEE BDL SC数字身份标准工作组会议
- html5游戏 遥控器按键,遥控器按键功能说明汇总
- 【ThreeJS】基础教学 创建一个立方体
- k8s对接smb/cifs存储
- 曾经拥有的,不要忘记。不能得到的,更要珍惜。属于自己的,不要放弃。已经失去的,留作回忆。
- 快速找出一个自然数的所有因数的方法
- 连接MySQL的jar包在本地哪里可以找到