简洁的OpenGL窗口截图——opengl+opencv实现

        在前面的博客中,我们介绍了在MFC中使用OpenGL绘图,现在我们需要将OpenGL窗口中所展示的图形绘制出来,或者保存为图像,坊间使用的很多代码都过于复杂,冗余的代码都浪费在了手写Bmp格式,内存数据格式转换等问题上。我们通常需要简洁强大且高校的代码,于是opencv库成为了我们的首选,并将这些功能封装在类中使得其易于使用。感谢这篇博客的内容,建立了glGraber类,使得我们可以摆脱繁重的代码,特此收录。

阅读更多

在MFC中使用工具条(Toolbar控件及其消息事件)

        MFC中的Mene和Toolbar都是常用的控件,如果你觉得按钮控件不容易组织结构,Menu和Toolbar将是一个不错的选择,你可以参照微软官方的代码添加控件,这篇不可介绍的是最简方法,直接开始吧。过程分为三步:

        1.在资源管理器中添加Toolbar控件

        2.在控件编辑器中添加图标和按钮

        3.为按钮添加消息事件

阅读更多

在MFC中使用OpenGL

mfcandopengl老外的教程果然还是非常赞的,强烈推荐原版,这篇博客简单介绍一下步骤:

        1.新建MFC工程

        2.添加Picture Control控件

        3.添加一个OpenGL控件类

        4.在MFC中使用OpenGL控件

        获取博主编译的测试工程(使用VS2013 X64平台,你还需要另外配置OpenGL相关环境),运行效果如左图所示,这个Demo还可以接受鼠标的控制,对模型进行操作。如果你需要多个OpenGL窗口,再实例化这个类,可以很轻易地实现多个窗口的绘制。这里就不翻译老外网站上的教程了,在上面给出了框架搭建的链接,这里就直接介绍该OpenGL类的使用方法吧。

阅读更多

VRML解析——使用OpenGL绘制wrl三维模型

vrml        这里,我们首先释出编译好的读取wrl文件的程序,如左图所示,是打开的一个CASIA-3D-Face数据库的三维模型文件,使用Opengl进行了绘制。这个程序还提供了一些快捷键,使我们可以方便的移动模型和视角,如ASDW等。

        这里提供了一个编译好的demo的下载链接,请注意,程序必须运行在64位的Windows上,你需要打开prototxt文件,修改你需要打开的wrl文件的目录,由于使用静态库进行编译,你不需要相关环境(Opengl protobuf glog等),但是你可能需要安装VC2013Runtime X64

        当然,你也可以使用此博客中的代码,编译其它版本的程序,下面的内容会默认你已经了解了本博客前两节的内容,对wrl文件的格式和本文读取wrl文件的方式有所了解。在本程序的icp类中包含了OpenGL的相关内容,参考了 LeheOpenGL  的代码设计,如果你对OpenGL还不太了解,推荐经典入门教程:Nehe的OpenGL教程。不多说了,开始吧。

阅读更多

VRML解析——C++处理CASIA-3D-Face数据库wrl文件

        虽然VRML语言已经被HTML5取代,但是仍有许多早期的三维模型文件采用wrl文件存储,并且偶尔会在转存成其它文件的过程中遇到问题,于是我们常常需要直接解析wrl文件。这里给需要解析wrl文件的同学指一条明路:Openvrml

        Openvrml本身调用了许多库,可以借助ARToolKit或者OGN进行安装,据说OGN比较容易一些,博主并没有使用过上述工具。而编译openvrml的过程极其痛苦,于是博主自己写了一个解析CASIA-3D-Face数据库中wrl文件的程序,仅供参考。这里附上中科院三维人脸数据库的链接,感谢中科院免费提供的资源。

阅读更多

VRML简介——虚拟现实构造语言

        VRML是一种与互联网结合,用来描述三维交互世界的程序语言,VRML即Virtual-Reality Modeling Language。

        SGI开发的Open Inventor软件的开放式三维文件格式被选定作为VRML的文件格式。1995年,VRML1.0版本正式推出,1996年推出了VRML2.0版本,添加了场景交互 多媒体支持 碰撞检测等功能,VRML2.0一直沿用,直到HTML5取代其地位。

阅读更多