有时直接创建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

OpenGL于MFC使用汇总(三)——离屏渲染相关推荐

  1. Android OpenGL ES (十)FrameBuffer离屏渲染

    作用 FrameBuffer Object,也称FBO,离屏渲染,可以摆脱屏幕的束缚,在后台做图像处理. 理解 FrameBuffer和Texture绑定,FrameBuffer犹如画板,而Textu ...

  2. OS X下使用OpenGL做离屏渲染

    本文为转载内容,原地址 有时,我们想通过GPU做一些视频.图像处理,而处理的结果不需要显示在显示器上,而是直接交给主存,这时候我们可以通过OpenGL的离屏渲染来实现. 由于我们不需要将渲染好的像素显 ...

  3. 离屏渲染在车载导航中的应用

    导读 与手机导航不同,高德地图的车机版(AMAP AUTO)直接面对各大车厂和众多设备商.这些B端用户采用的硬件参数参差不齐,提出的业务需求涉及到渲染中诸多复杂技术的应用,这对渲染性能提出了极高的要求 ...

  4. Android OpenGL ES 离屏渲染(offscreen render)

    通常在Android上使用OpenGL ES,都是希望把渲染后的结果显示在屏幕上,例如图片处理.模型显示等.这种情况下,只需要使用Android API中提供的GLSurfaceView类和Rende ...

  5. nova 命令汇总三 ——网络相关命令

    nova 命令汇总三 --网络相关命令 和网络相关的操作主要包括:add-fixed-ip.add-floating-ip.add-secgroup.fixed-ip-get .fixed-ip-re ...

  6. iOS之从OpenGL深入探究离屏渲染及性能优化

    一.探究内容 到底什么是离屏渲染?是在GPU上面还是CPU上面执行的? 为什么要有离屏渲染?什么情况下会产生离屏渲染? 帧缓冲区是什么?当前屏幕缓冲区和屏幕外缓冲区又是什么? 切换缓冲区是什么操作?真 ...

  7. OpenGL基础33:帧缓冲(上)之离屏渲染

    在之前的章节,所有的物体都是中规中矩的显示的,只考虑了光照对物体的影响,那假设想要显示特殊的效果该怎么操作呢?例如马赛克风.将所有的物体都显示为黑白色,就像上世纪80年代的灰白电视一样,又或者说将整个 ...

  8. 立志做中国市场TOP2,新华三云屏底气何来?

    初出茅庐便立志要做中国市场的TOP2,新华三云屏MagicHub的底气究竟从何而来? 备受关注的新华三智能终端 在新华三集团旗下的众多产品线中,智能终端可以说是2021 NAVIGATE领航者峰会上最 ...

  9. 会议室应用中的“三块屏”

    ◆  提起会议室大家想到的是什么场景? ①  会议室里有白板.有电视.有投影,桌面上有一堆线.有各种接口. ②  对于远程会议室还包括各个品牌的视频会议终端.桌面上有八爪鱼.各类遥控器. ◆  提起使 ...

最新文章

  1. MIT学神、「太极」作者胡渊鸣送你一门计算机图形学课程
  2. mysql percona server_MySQL Study之--Percona Server版本
  3. Python如何实现单例模式?其他23中设计模式python如何实现?
  4. 双拼输入法键位图_谈谈小鹤双拼入门(1)
  5. 服务器c盘大文件怎么查询,怎么查看c盘隐藏文件_怎么查看c盘的大文件
  6. 凹凸世界服务器维护到几点,《凹凸世界》2021年7月21日更新版本停服维护公告...
  7. Windows 2008 R2安装DHCP服务器问题及解决方法
  8. 如何:在各种字符串类型之间进行转换
  9. 计算机科学与技术探索,计算机科学与技术的发展趋势探索
  10. 内涝预测过程的噪音_提高人工智能模型准确率的测试过程中需要注意什么?
  11. CentOS 7安装之后的七个事
  12. mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区
  13. Starship Troopers(HDU 1011 树形DP)
  14. c语言修改内存字节,要开学了,小白给大家一个C语言修改dnf内存的示范代码
  15. android 定时唤醒蓝牙,Android保活——蓝牙唤醒(主动kill掉也可唤醒)
  16. html静态网页设计实训总结,网页设计实训心得体会范文
  17. 计算机系统端口445,如何关闭445端口,教您如何关闭系统端口
  18. python 图片合并pdf_利用python将多张图片合并为pdf文档
  19. 操作系统 文件换行符问题
  20. PPT中插入的图片如何铺满整页

热门文章

  1. 模切ERP和免费OA系统是互相结合提高效率
  2. 搭建Telnet服务器
  3. Thinkphp5 还有这种操作?
  4. 入门级----测试的执行、环境的搭建、每日构建、测试记录和跟踪、回归测试、测试总结和报告...
  5. WPF自定义控件与样式(1)-矢量字体图标(iconfont)
  6. 在Linux和Mac OS X系统上运行.NET
  7. linux的mysql小记
  8. html字符串生成器源代码
  9. POLYCOM RMX2000 激活与初始化 信令板卡初始化
  10. Oracle数据库自动存储管理(ASM)