本文主要讲述如何在VC++环境下实现单文档SDI与OpenGL多视图分割窗口,最终的界面类似3DMAX的主界面。首先给出我实现的效果图:

  整个实现过程网络上有很多零散的博文,请各位自行搜索,在基于对话框、单文档或多文档下实现多视图分割窗口的原理是一致的。本文检索了众多相关论文,发现了几篇写的非常细致的论文。在此向相关作者表示感谢。下面给出龚勋的论文原文,大家可以仔细阅读和学习。相信一定能够做出来想要的效果的。但是文中对于全局变量的定义和初始化在VC++2015环境下编译不通过。经过排查,发现这些全局变量在定义的时候不用初始化即可。即论文中下面的代码:

HGLRC g_pBLRC=NULL;//左下RC
HGLRC g_pBRRC=NULL;//右下RC
HGLRC g_pTLRC=NULL;//左上RC
HGLRC g_pTRRC=NULL;//右上RC
CDC*g_pBLDC=NULL;//左下DC
CDC*g_pBRDC=NULL;//右下DC
CDC*g_pTLDC=NULL;//左上DC
CDC*g_pTRDC=NULL;//右上DC

应该修改为:

HGLRC g_pBLRC;//左下RC
HGLRC g_pBRRC;//右下RC
HGLRC g_pTLRC;//左上RC
HGLRC g_pTRRC;//右上RC
CDC*g_pBLDC;//左下DC
CDC*g_pBRDC;//右下DC
CDC*g_pTLDC;//左上DC
CDC*g_pTRDC;//右上DC

在VC++2015环境下即可编译通过,链接和执行都可以正常通过。关于外部全局变量的使用可以参考VC++定义全局变量及extern用法

参考论文下载:VC++和OpenGL多视图分割窗口设计与实现参考论文

附带一篇讲述不太细致的博文:OpenGL多线程多视图的实现

链接3:OpenGL控件

实例源码下载:

1、RSQuickLook-MFC SD+OpenGL多分割窗口渲染框架-VC++2015-20180429I

2、MFC和OpenGL的多文档MDI分割窗口的实现

3、VCPP

4、glbase

VC++环境下单文档SDI与OpenGL多视图分割窗口的实现-类似3DMAX的主界面的更多相关文章

  1. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

  2. VC基于单文档OpenGL框架

    本文是在VC6.0的环境下,运用MFC实现的OpenGL最基本框架,需要简单了解MFC编程(会在VC6.0里创建MFC单文档应用程序就行),甚至不必了解OpenGL的知识.以下是具体的步骤. 1.创建 ...

  3. python3.6环境部署文档

    python3.6环境部署文档   内容 Linux部署Python3.6环境 Mac部署Python3.6环境 Window10部署Python3.6环境 Pycharm安装 1. Linux部署P ...

  4. CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档

    ----------------CentOS6.5下安装JDK1.7+MYSQL5.5+TOMCAT7+nginx1.7.5环境安装文档----------------------- [JDK1.7安 ...

  5. VUE CLI环境搭建文档

    VUE CLI环境搭建文档 1.安装Node.js 下载地址 https://nodejs.org/zh-cn/download/ 2.全局安装VUE CLI win+R键打开运行cmd窗口输入一下代 ...

  6. 环境安装文档(for Ubuntu)

    这个文档的目标是:各位小伙伴通过这个文档,可以在一台全新的 Ubuntu 电脑上搭建平常开发使用的环境,主要包含 Node.js, git 和 编辑器部分. 这是针对 Ubuntu 系统的安装文档,W ...

  7. VC操作WORD文档总结

    一.写在开头 最近研究word文档的解析技术,我本身是VC的忠实用户,看到C#里面操作WORD这么舒服,同时也看到单位有一些需求,就想尝试一下,结果没想到里面的技术点真不少,同时网络上的共享资料很多, ...

  8. 环境搭建文档——Windows下的Python3环境搭建

    前言 背景介绍: 自己用Python开发了一些安卓性能自动化测试的脚本, 但是想要运行这些脚本的话, 本地需要Python的环境. 测试组的同事基本都没有安装Python环境, 于是乎, 我就想直接在 ...

  9. MFC 修改 单文档 SDI 窗体 标题

    程序主窗口标题栏的一般形式为: 文档标题—主窗口标题 1.修改文档标题 修改CExamDoc::onNewDocument()函数为: BOOL CExamDoc::OnNewDocument() { ...

随机推荐

  1. 使用Spring的AbstractRoutingDataSource类来进行拓展多数据源

    1.继承抽象类AbstractRoutingDataSource 通过重写这个抽象类的determineCurrentLookupKey()方法来决定返回哪个数据库. 2.配置多个数据库 <be ...

  2. 【学习笔记】--- 老男孩学Python,day5 列表 元祖

    今日主要内容1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 常用的功能: 1. 增: append( ...

  3. JavaScript--动态加载脚本和样式(23)

    一 动态脚本 // 当网站需求变大,脚本的需求也逐步变大;我们不得不引入太多的JS脚本而降低了整站的性能; // 所以就出现了动态脚本的概念,在适时的时候加载相应的脚本; 1.动态引入js文件 var ...

  4. js同时获取多个同name的input框的值

    demo代码 <!doctype html> <html ng-app="a3_4"> <head> <title>表头排序< ...

  5. 使用ThinkPHP实现生成/校验验证码功能

    首先了解父类Verity.class.php(ThinkPHP/Library/Think/Verity.class.php)中的一些函数 1:check() 校验验证码是否正确 2:entry()输 ...

  6. layui的checkbox示例

    1.html页面: var isSkipcheckbox = ''; if (appOptions.isSkip != "0") { isSkipcheckbox = 'check ...

  7. CentOS7查看开放端口命令及开放端口号

    CentOS 7查看以开放端口命令:firewall-cmd —list-ports 查看端口是否开放命令:第一个方法就是使用lsof -i:端口号命令行,例如lsof -i:80.如果没有任何信息输 ...

  8. HTTP 协议入门-笔记

    原文参考http://mp.weixin.qq.com/s/czx0AHaItrJ-c49XDboIUg  HTTP是基于TCP/IP协议的应用层协议,规定了客户端和服务端之间的通信格式,默认使用80 ...

  9. JavaScript判断当前手机是Android还是iOS系统

    $(function () { var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf(' ...

  10. 带你从零学ReactNative开发跨平台App开发(二)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...