OpenGL于MFC使用汇总(三)——离屏渲染

有时直接创建OpenGL形式不适合,或者干脆不同意然后创建一个表单,正如我现在这个项目,创建窗体不显示,它仅限于主框架。而我只是ActiveX里做一些相关工作,那仅仅能用到OpenGL的离屏渲染技术了~即不直接绘制到窗体上,而是绘制到一张位图上。然后再次调用这张位图实现兴许的工作。

以下就总结怎么使用所谓的“离屏渲染”。

    const int WIDTH = 500;const int HEIGHT = 500;// Create a memory DC compatible with the screenHDC hdc = CreateCompatibleDC(0);if (hdc == 0) cout<<"Could not create memory device context";// Create a bitmap compatible with the DC// must use CreateDIBSection(), and this means all pixel ops must be synchronised// using calls to GdiFlush() (see CreateDIBSection() docs)BITMAPINFO bmi = {{ sizeof(BITMAPINFOHEADER), WIDTH, HEIGHT, 1, 32, BI_RGB, 0, 0, 0, 0, 0 },{ 0 }};unsigned char *pbits; // pointer to bitmap bitsHBITMAP hbm = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, (void **) &pbits,0, 0);if (hbm == 0) cout<<"Could not create bitmap";//HDC hdcScreen = GetDC(0);//HBITMAP hbm = CreateCompatibleBitmap(hdcScreen,WIDTH,HEIGHT);// Select the bitmap into the DCHGDIOBJ r = SelectObject(hdc, hbm);if (r == 0) cout<<"Could not select bitmap into DC";// Choose the pixel formatPIXELFORMATDESCRIPTOR pfd = {sizeof (PIXELFORMATDESCRIPTOR), // struct size1, // Version numberPFD_DRAW_TO_BITMAP | PFD_SUPPORT_OPENGL, // use OpenGL drawing to BMPFD_TYPE_RGBA, // RGBA pixel values32, // color bits0, 0, 0, // RGB bits shift sizes...0, 0, 0, // Don't care about them0, 0, // No alpha buffer info0, 0, 0, 0, 0, // No accumulation buffer32, // depth buffer bits0, // No stencil buffer0, // No auxiliary buffersPFD_MAIN_PLANE, // Layer type0, // Reserved (must be 0)0, // No layer mask0, // No visible mask0, // No damage mask};int pfid = ChoosePixelFormat(hdc, &pfd);if (pfid == 0) cout<<"Pixel format selection failed";// Set the pixel format// - must be done *after* the bitmap is selected into DCBOOL b = SetPixelFormat(hdc, pfid, &pfd);if (!b) cout<<"Pixel format set failed";// Create the OpenGL resource context (RC) and make it current to the threadHGLRC hglrc = wglCreateContext(hdc);if (hglrc == 0) cout<<"OpenGL resource context creation failed";wglMakeCurrent(hdc, hglrc);// Draw using GL - remember to sync with GdiFlush()GdiFlush();/*详细的绘制函数~~~~~~~~~~~~~~我就不写了*/// Clean upwglDeleteContext(hglrc); // Delete RCSelectObject(hdc, r); // Remove bitmap from DCDeleteObject(hbm); // Delete bitmapDeleteDC(hdc); // Delete DC


版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/bhlsheji/p/4713200.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 动态属性和特性

文章目录1. 使用动态属性转换数据2. property2.1 help() 文档3. 特性工厂函数4. 属性删除操作5. 处理属性的重要属性和函数5.1 处理属性的内置函数5.2 处理属性的特殊方法learn from 《流畅的python》 1. 使用动态属性转换数据 在 Python 中&#xff0c;数据的属性和处理数据…

bash 不是内部或外部命令_Win10_cmd下提示:‘xxx’不是内部或外部命令,也不是可运行的程序 或批处理文件...

一、windows下命令行查看ip: win+R,调出【运行】,输入cmd,回车打开终端,输入ipconfig,查看成功: 二、可能出现的问题: ping 不是内部或外部命令,也不是可运行的程序或批处理文件。 ipconfig 不是内部或外部命令,也不是可运行的程序或批处理文件。 解决: 1、控制面板…

python 属性描述符

文章目录1. 描述符示例&#xff1a;验证属性2. 自动获取储存属性的名称3. 继承改进4. 覆盖型与非覆盖型描述符对比4.1 覆盖型描述符4.2 没有 __get__ 方法的覆盖型描述符4.3 非覆盖型描述符4.4 在类中覆盖描述符5. 描述符用法建议learn from 《流畅的python》 1. 描述符示例&a…

计算机声音与视频教程,电脑怎么录屏幕视频带声音 电脑录屏幕视频带声音教程...

电脑怎么录屏幕视频带声音&#xff0c;相信有许多的用户在工作上或者学习上也会有这种需求&#xff0c;自己对此也还是不太的了解&#xff0c;毕竟也是没有怎么使用过&#xff0c;对此也是想要知道这电脑怎么录屏幕视频带声音&#xff0c;其实也是有几个原因&#xff0c;下面就…

tensor转换为图片_为大家介绍图片转换pdf的经验总结!你找对方法了吗?

图片转换pdf怎么做&#xff1f;不少朋友们在学习和工作中都发现了PDF这种文件格式似乎格外的吃香&#xff0c;你收到的很多培训文件和在网上搜罗的一些学习文件&#xff0c;全部都是PDF格式&#xff0c;PDF格式这么吃香&#xff1f;甚至有人让你把图片都转成PDF格式&#xff0c…

LeetCode 2021 力扣杯全国秋季编程大赛(第384名)

文章目录1. 无人机方阵2. 心算挑战3. 黑白翻转棋4. 玩具套圈5. 十字路口的交通2021.9.11&#xff0c;周六比赛之前&#xff1a;早上去交大看看&#xff0c;本科毕业10年了&#xff0c;由于限流&#xff0c;校园里没有多少回校的校友。逛了逛&#xff0c;跟太太和的她的同学一起…

URAL 2047 Maths 打表 递推

MathsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid87157#problem/B Description Android Vasya attends Maths classes. His group started to study the number theory recently. The teacher gave them severa…

java 画笔跟swing组件_Java学习教程(基础)--Java版本历史(二)

Java语言自JDK1.0版本以来经历了许多次更新&#xff0c;也在基本程序库中增加了大量的类别和包。从J2SE 1.4开始&#xff0c;Java语言的变动由 Java Community Process&#xff08;JCP&#xff09;管理&#xff0c;JCP使用Java规范请求&#xff08;Java Specification Requests…

计算机网络路由选择协议,IP路由选择协议原理和作用

IP路由选择协议原理和作用(2008-10-20 19:26:17)标签&#xff1a;杂谈IP路由选择如果目的主机与源主机直接相连或都在一个共享网络上,那就直接把包发送到目的主机,如果不是,那把ip数据报送到默认路由器,由它转发路由器使用路由表保存自己知道的网络的信息,它包括:目的IP地址,它…

LeetCode 2000. 反转单词前缀

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 word 和一个字符 ch 。 找出 ch 第一次出现的下标 i &#xff0c;反转 word 中从下标 0 开始、直到下标 i 结束&#xff08;含下标 i &#xff09;的那段字符。 如果 word 中不存在字符 ch &#xff0c;则无需进…

oss图片跨域问题_图片存储解决方案-阿里云对象存储

开通对象存储OSS1. 打开阿里云官网&#xff0c;选择产品对象存储 OSS 2.开通对象存储OSS 需要支付宝扫码登录3.进入管理控制台 4.新建存储空间 5.跨域资源共享(CORS)的设置管理文件整合Springboot实现图片上传服务端签名直传并设置上传回调 : 在服务端完成签名&#xff0c;并且…

2015-8-10工作日志

1. 工作规划&#xff1a;完成系统请假管理的功能。 &#xff08;1&#xff09;根据系统需求完成请假管理model&#xff1b; &#xff08;2&#xff09;进行请假流程的deployment&#xff1b; &#xff08;3&#xff09;进行请假流程的流程定义管理&#xff1b; &#xff08;4&a…

会理天气预报软件测试,会理天气预报15天

发送给QQ好友★会理未来15天天气预报★会理天气预报7月22日 星期四:阵雨&#xff0c;18C~28C无持续风向&#xff0c;小于3级会理天气预报7月23日 星期五:阵雨&#xff0c;18C~28C无持续风向&#xff0c;小于3级会理天气预报7月24日 星期六:阵雨&#xff0c;18C~27C无持续风向&a…

LeetCode 2001. 可互换矩形的组数

文章目录1. 题目2. 解题1. 题目 用一个下标从 0 开始的二维整数数组 rectangles 来表示 n 个矩形&#xff0c;其中 rectangles[i] [widthi, heighti] 表示第 i 个矩形的宽度和高度。 如果两个矩形 i 和 j&#xff08;i < j&#xff09;的宽高比相同&#xff0c;则认为这两…

google 浏览器默认打开控制台_前端开发调试:浏览器console方法总结

今天突发奇想&#xff0c;准备总结下console的各个函数。以前都是只用一个console.log(),查了一下发现有好多&#xff0c;就记下来&#xff0c;方便以后查阅。速记consoleConsole对象提供浏览器控制台的接入&#xff0c;不同浏览器是不一样的&#xff0c;这里介绍普遍存在的Con…

计算机兴趣小组活动总结,兴趣小组活动总结优秀范文

总结&#xff0c;可以把零散的、肤浅的感性认识上升为系统、深刻的理性认识&#xff0c;从而得出科学的结论&#xff0c;以便发扬成绩、克服缺点、吸取经验教训&#xff0c;使今后的工作少走弯路、多出成果。下面是小编给大家精心挑选的工作总结&#xff0c;希望能帮助到大家!本…

江小白包装设计原型_雪碧和江小白的品牌跨界合作之旅可谓是一场品牌包装的视觉盛宴...

大家好&#xff0c;我是古小一&#xff0c;一个行走在酒水品牌包装设计不归路上的小编&#xff01;当下品牌间的跨界合作越来越多&#xff0c;消费者不但有审美疲劳的趋势&#xff0c;脑洞过大的跨界还容易引发群嘲。不过好在有热情网友的帮助&#xff0c;雪碧与江小白已经自然…

LeetCode 2002. 两个回文子序列长度的最大乘积(状态压缩+枚举状态子集+预处理)

文章目录1. 题目2. 解题2.1 超时2.2 预处理优化1. 题目 给你一个字符串 s &#xff0c;请你找到 s 中两个 不相交回文子序列 &#xff0c;使得它们长度的 乘积最大 。 两个子序列在原字符串中如果没有任何相同下标的字符&#xff0c;则它们是 不相交 的。 请你返回两个回文子…

2018年计算机CPU纳米制程,AMD发大招,推出7纳米制程CPU与GPU

原标题&#xff1a;AMD发大招&#xff0c;推出7纳米制程CPU与GPU处理器及图形芯片大厂AMD&#xff0c;7日凌晨在美国旧金山举办的技术大会上&#xff0c;正式公布了自家在CPU及GPU两部分的7纳米制程产品。其中&#xff0c;在GPU部分是Radeon Instinct MI60/MI50专业显示卡&…

[hdu5372 Segment Game]树状数组

题意&#xff1a;有两种操作&#xff1a;(1)插入线段&#xff0c;第i次插入的线段左边界为Li&#xff0c;长度为i (2)删除线段&#xff0c;删除第x次插入的线段。每次插入线段之前询问有多少条线段被它覆盖。 思路&#xff1a;由于插入的线段长度是递增的&#xff0c;所以第i次…