像素格式结构-PIXELFORMATDESCRIPTOR

osg学习(四十一)win32窗体像素格式PixelFormat 每一个设备上下文都要有一个像素格式 作用是什么 1、获取像素格式 2、设置像素格式 阅读详情

3、OpenGL for Windows 95图形库

OpenGL图形库一共有100多个函数。其中核心函数有115个,它们是最基本的函数,其前缀是gl,OpenGL实用库(OpenGL utility library,GLU)的函数功能更高一些,如绘制复杂的曲线曲面、高级坐标变换、多边形分割等,共有43个,前缀为glu;OpenGL辅助库(OpenGL auxiliarylibrary,GLAUX)的函数是一些特殊的函数,包括简单的窗口管理、输入事件处理、某些复杂三维物体绘制等函数,共有31个,前缀为aux。

此外,还有六个WGL函数非常重要,专门用于OpenGL和Windows 95窗口系统的联接,其前缀为wgl,主要用于创建和选择图形操作描述表(renderingcontexts)以及在窗口内任一位置显示字符位图。这些功能是Windows 95对OpenGL的唯一补充。另外,还有五个Win32函数用来处理像素格式(pixel formats)和双缓存。由于它们是对Win32系统的扩展,因此不能应用在其它OpenGL平台上。

4、OpenGL for Windows 95程序设计

OpenGL for Windows 95的设计与OpenGL for UNIX的程序设计有一点小区别,关键就在于如何将OpenGL与不同的操作系统下的窗口系统联系起来。如果调用OpenGL辅助库窗口管理函数,则不用考虑这些问题。下面简要介绍在Windows 95下OpenGL的程序设计关键。

4.1 图形操作描述

在Windows 95下窗口程序必须首先处理设备描述表(Device Contexts,DC),DC包括许多如何在窗口上显示图形的信息,既指定画笔和刷子的颜色,设置绘图模式、调色板、映射模式以及其它图形属性。同样,OpenGL for Windows95的程序也必须使用DC,这与其它Windows 95程序类似。但是,OpenGL for Windows 95必须处理特殊的DC图形操作描述表,这是DC中专为OpenGL使用的一种。一个OpenGL应用图形操作描述表内有OpenGL与Windows 95窗口系统相关的各种信息。一个OpenGL应用首先必须创建一个图形操作描述表,然后再启动它,最后在所定义的窗口内按常规方式调用OpenGL函数绘制图形。

一个图形操作描述表不同于其它DC,它们调用每个GDI函数都需要一个句柄,而图形操作描述表方式下只需一个句柄就可以任意调用OpenGL函数。也就是说,只要当前启用了某个图形操作描述表,那么在未删除图形操作描述表之前可以调用任何OpenGL函数,进行各种操作。

4.2 像素格式

在创建一个图形操作表之前,首先必须设置像素格式。像素格式含有设备绘图界面的属性,这些属性包括绘图界面是用RGBA模式还是颜色表模式,像素缓存是用单缓存还是双缓存,以及颜色位数、深度缓存和模板缓存所用的位数,还有其它一些属性信息。

4.3 像素格式结构

每个OpenGL显示设备都支持一种指定的像素格式。一般用一个名为PIXELFORMATDESCRIPTOR的结构来表示某个特殊的像素格式,这个结构包含26个属性信息。Win32定义PIXELFORMATDESCRIPTOR如下所示:

01.typedef struct tagPIXELFORMATDESCRIPTOR
02.  {
03.    WORD nSize;
04.    WORD nVersion;
05.    DWORD dwFlags;
06.    BYTE iPixelType;
07.    BYTE cColorBits;
08.    BYTE cRedBits;
09.    BYTE cRedShift;
10.    BYTE cGreenBits;
11.    BYTE cGreenShift;
12.    BYTE cBlueBits;
13.    BYTE cBlueShift;
14.    BYTE cAlphaBits;
15.    BYTE cAlphaShift;
16.    BYTE cAccumBits;
17.    BYTE cAccumRedBits;
18.    BYTE cAccumGreenBits;
19.    BYTE cAccumBlueBits;
20.    BYTE cAccumAlphaBits;
21.    BYTE cDepthBits;
22.    BYTE cStencilBits;
23.    BYTE cAuxBuffers;
24.    BYTE iLayerType;
25.    BYTE bReserved;
26.    DWORD dwLayerMask;
27.    DWORD dwVisibleMask;
28.    DWORD dwDamageMask;
29.  } PIXELFORMATDESCRIPTOR;

4.4 初始化PIXELFORMATDESCRIPTOR结构

PIXELFORMATDESCRIPTOR中每个变量值的具体含义和设置可以参考有关资料,下面举出一个PIXELFORMATDESCRIPTOR初始化例子来简要说明相关变量的意义。定义PIXELFORMATDESCRIPTOR结构的pfd如下:

01.PIXELFORMATDESCRIPTOR pfd = {
02.    sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
03.    1,
04.    PFD_DRAW_TO_WINDOW |      // support window
05.    PFD_SUPPORT_OPENGL |      // support OpenGL
06.    PFD_DOUBLEBUFFER,        // double buffered
07.    PFD_TYPE_RGBA,         // RGBA type
08.    24,               // 24-bit color depth
09.    0, 0, 0, 0, 0, 0,        // color bits ignored
10.    0,               // no alpha buffer
11.    0,               // shift bit ignored
12.    0,               // no accumulation buff
13.    0, 0, 0, 0,           // accum bits ignored
14.    32,               // 32-bit z-buffer
15.    0,               // no stencil buffer
16.    0,               // no auxiliary buffer
17.    PFD_MAIN_PLANE,         // main layer
18.    0,               // reserved
19.    0, 0, 0             // layer masks ignored
20.  };

在这个结构里,前两个变量的含义十分明显。第三个变量dwFlags的值是PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,表明应用程序使用OpenGL函数来绘制窗口,第四个表明当前采用RGBA颜色模式,第五个采用24位真彩色,既1.67千万种颜色,如果是256色系统则自动实现颜色抖动;因为没有使用alpha缓存和累计缓存,所以从变量cAlphaBits到cAccumAlphaBits都设置为0;深度缓存设置为32位,这个缓存能解决三维场景的消隐问题;变量cAuxBuffers设置为0,在Windows 95下不支持辅助缓存;Windows 95下针对OpenGL变量ilayerType只能设置为PFD_MAIN_PLANE,但在其它平台也许支持PFD_MAIN_PLANE或PFD_MAIN_UNDERLAYPLANE;接下来bReserved变量只能设为0,而最后三个变量Windows 95都不支持,故全设置为0。

4.5 设置像素结构

当初始化PIXELFORMATDESCRIPTOR结构后,就要设置像素格式。下面举例说明如何设置像素格式。

1.CClientDC clientDC(this);
2.  int PixelFormat = ChoosePixelFormat(clientDC.m_hDC,&pfd);
3.  BOOL result=SetPixelFormat(clientDC.m_hDC,PixelFormat,&pfd);

第一行语句说明得到一个应用窗口客户区的设置描述表。第一行调用ChoosePixelFormat()选择一个像素格式,并将像素格式索引号返回给pixelFormat变量;函数中第一个参数是选择像素格式的设备描述表的句柄,第二个参数是PIXELFORMATDESCRIPTOR结构的地址。如果调用失败则返回0;否则返回像素格式索引号。第三行调用SetPixelFormat()设置像素格式,三个参数分别是设备描述表的句柄、像素格式索引号和PIXELFORMATDESCRIPTOR结构的地址。如果调用成功则返回TRUE,否则返回FALSE。

4.6 创建图形操作描述表

正如前所述,必须创建图形操作描述表并启用它后,才能调用OpenGL函数在窗口内进行各种图形操作。一般来说,利用MFC中增补的管理图形操作描述表方法来编程比较方便。即在视类(CView)的消息OnCreat()中创建图形操作描述表。

Win32 像素格式描述符学习 像素格式(PIXELFORMATDESCRIPTOR)明确了OpenGL绘制平面的特性; 阅读详情

相关推荐

Axial Attention 和 Criss-Cross Attention及其代码实现

Axial Attention 和 Criss-Cross Attention及其代码实现 ​ 文章目录Axial Attention 和 Criss-Cross Attention及其代码实现1 Criss - Cross Attention介绍1.1 引言1.2 理论实现1.2.1 获取权重A1.2.2 Affinity操作1.3.3 全部信息获取1.3 代码实现1.3.1 官方实现1.3.2 纯pytorch实现2 Axial Attention 介绍2.1 引言2.2 理论实现2.3 代码实现2.3

fzl的博客 2万+

PIXELFORMATDESCRIPTOR的结构

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

Solidfish的专栏 1362

CTF入门RSA维纳攻击

RSA维纳攻击 一.题目描述 适用于e过大或国过小情况下的RSA加密 题干如下: #coding:utf-8 import gmpy2 import libnum e = 54856417509806712596137531985117125938559627187663765776152288580865785539464797248184444737659643755765127505761012086539564616967122137525108154121304264697865568653100

noj_h的博客 2232

PIXELFORMATDESCRIPTOR 像素格式描述表

像素格式描述表:PIXELFORMATDESCRIPTOR(转)   在OpenGL对窗口渲染之前,必须根据渲染需要对窗口进行配置。 需要硬件渲染还是软件渲染? 渲染使用单缓冲还是双缓冲? 是否需要深度缓冲区? 是否需要模板、目标Alpha或积累缓冲

Magina3的专栏 6268

vivado中出现ERROR: [Labtools 27-2220]检测不出开发板

这个错误可能是由于 Vivado 工具中的 cs_server.exe 文件没有正确安装或者文件路径不正确导致的。你可以尝试以下步骤来。时间: 2023-08-16 12:05:50 浏览: 767。希望以上方法能够帮助你。

qq_40510975的博客 2388

HBuilderX结合Android Studio实现Uniapp安卓Apk高效离线打包指南

本文提供了一份详细的Uniapp安卓Apk离线打包实战指南。通过整合HBuilderX与Android Studio,手把手教你搭建本地编译环境、配置原生工程、执行核心打包流程,并分享快速更新资源和排查常见问题的技巧,助你彻底摆脱云端打包的排队依赖,实现高效、可控的应用构建。

weixin_28835551的博客 559

MFC单文档结构,实现OpenGL的绘图,移动,旋转,缩放

MFC单文档结构,实现OpenGL的绘图,移动,旋转,缩放 基本知识: Windows应用程序是使用设备描述表(DeviceContext,简写为"DC")进行图形的绘制输出, 但OpenGL并不使用标准的设备描述表,它使用渲染描述表(RenderingContext,简写为"RC")完成图形图像的映射。 描述表的映射核心是像素格式的设置。 当进行OpenGL的绘图

... 7954

【Shader】Unity批量更换Shader

在Unity开发中,因为渲染管线问题,经常会遇到需要大量更改shader的问题,本篇文章讲述批量更换Shader的工具。

憨辰 1467

OpenGL像素格式

像素格式明确了OpenGL绘制平面的特性,如象素缓冲区是单缓冲还是双缓冲,数据是 RGBA方式还是Color Index方式等。每个OpenGL显示设备一般用名为PIXELFORMATDESCRIPTOR的结构来表示某个的像素格式,这个结构包含26个属性信息。 结构体定义如下: typedef struct tagPIXELFORMATDESCRIPTOR { WORD nSize;

297

rk3576 适配以太网(百兆)

百兆以太网,也常被称为快速以太网,是一种在1990年代中期推出的计算机网络技术标准。它相当于把当时主流的10兆以太网速度提升了10倍,最高能提供 100 Mbps 的传输速率,让文件共享、视频传输等网络应用变得流畅许多。它在数据链路层面完全保留了传统以太网的帧格式和MAC机制,这意味着现有的网络软件可以无缝对接,用户从10兆网络升级到百兆网络时,通常只需要更换网卡和集线器/交换机即可,非常方便。 在rk3576平台上,原生以太网接口支持百兆、千兆,还有pcie转换的2.5G。

weixin_35723192的博客 204

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1719

PIXELFORMATDESCRIPTOR

像素格式描述表:PIXELFORMATDESCRIPTOR 在OpenGL对窗口渲染之前,必须根据渲染需要对窗口进行配置。 需要硬件渲染还是软件渲染? 渲染使用单缓冲还是双缓冲? 是否需要深度缓冲区? 是否需要模板、目标Alpha或积累缓冲区? ....... 当为窗口设置这些参数之后,就无法对它们进行修改。为了从一个只有深度缓冲和颜色缓冲区的窗口切换到一个带

vanlin5566的专栏 920

华为OD机考双机位C卷 - 信道分配(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 信道分配

算法大师! 453

《绘图前设置:像素格式——PIXELFORMATDESCRIPT、设备上下文、渲染上下文》

转载地址:https://www.cnblogs.com/wiener-zyj/p/4159745.html 像素格式——PIXELFORMATDESCRIPT、设备上下文、渲染上下文 在OpenGL对窗口进行渲染之前,必须根据渲染需要对窗口进行配置。 需要硬件渲染还是软件渲染? 渲染使用但缓冲还是双缓冲模式? 是否需要深度缓冲区? 是否需要模板、目标...

weixin_30593443的博客 216

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OpenGL像素格式-PIXELFORMATDESCRIPTOR

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

Augusdi的专栏 3096

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

《高效学习OpenGL》之 openGL设置窗口像素格式

PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor 1, // Version Number PFD_DRAW_TO_WINDOW | // Format Must Support

编辑编辑器 2716

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Windows下创建OpenGL窗口

一、     设置像素格式 像素格式用于指定OpenGL绘画的一些属性,在windows中,使用PIXELFORMATDESCRIPTOR结构体来描述。一个设备可以支持许多像素格式,但只能拥有一种当前像素格式,需要从这一系列的像素格式中选择出一种合适的像素格式来,并设置它。主要属性有:  像素缓冲是单缓冲还是双缓冲; 像素数据时RGBA还是颜色索引; 颜色数据的位数; 深度缓冲的位数; 模

DreamPixel的专栏 2237

ReactOS 图形系统分析(52):OpenGL 支持 — wingl.c

接口标准化:它把"像素格式"这一 OpenGL 窗口概念以三个系统调用()暴露给用户态,是 gdi32 → opengl32 → 显示驱动 DDI 之间唯一的内核收口;惰性缓存把"设备支持的格式总数"缓存进 DC(ipfdDevMax),避免重复陷入驱动;窗口表面桥接通过拿到 WNDOBJ 与psoOwner表面,把 OpenGL 操作落实到窗口的底层表面,并将 HWND/WNDOBJ 交给驱动回调;可选 DDI 适配:三个回调均为可选(

大坡3D软件开发 184

PIXELFORMATDESCRIPTOR说明

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

microsoftwin32的专栏 2092

PIXELFORMATDESCRIPTOR结构

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

Jiwei的专栏 742

opengl的PIXELFORMATDESCRIPTOR

原文转自   http://hi.baidu.com/beyoar/item/4a74a89c26b80ede1f4271b6 表述像素格式:PIXELFORMATDESCRIPTOR 在OpenGL对窗口渲染之前,必须根据渲染需要对窗口进行配置。 需要硬件渲染还是软件渲染? 渲染使用单缓冲还是双缓冲? 是否需要深度缓冲区? 是否需要模板、目标Alpha或积累缓冲区?

sherry_0009的专栏 1008

Windows中设置OpenGL像素格式的两种方法

indows使用OpenGL必须设置OpenGL环境,将窗口连接到OpenGL。首先选择并设置相应像素格式,然后创建着色描述表并将其连接到设备描述表。本文介绍两种设置OpenGL环境的方法,主要是选择像素格式方法的不同。HDC g_hDC = NULL;HGLRC g_hRC = NULL;#define METHOD_1BOOL ConnectGL1 (HWND hWnd);BOOL ConnectGL2 (HWND hWnd);          #ifdef METHOD_1#define Conne

poxiaozi6264的专栏 3847
上一篇: OpenGl的glMatrixMode()函数理解
下一篇: openGL中创建OpenGL Render Context的步骤
jiangdf
博客等级 码龄19年 86粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值