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

时间:2022-11-27 13:50:02

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

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++环境下单文档SDI与OpenGL多视图分割窗口的实现-类似3DMAX的主界面

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

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

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

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

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

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

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

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

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

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

链接3:OpenGL控件

实例源码下载:

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

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

3、VCPP

4、glbase