简介

OpenGL是为三维绘图提供的标准应用编程接口。

OpenGL处理的仅仅是三维绘图方面,而很少或是根本不提供图形用户界面编程方面的支持。OpenGL*应用程序的用户界面必须由其它工具包创建,比如在X平台下的Motif,在Windows平台下的微软基本类库(MFC)——或是在这两种平台下都能使用的Qt。

Qt的OpenGL模块使在Qt应用程序中使用OpenGL变的更加容易。它提供了一个OpenGL的部件类,这个部件类除了打开一个OpenGL显示缓冲,利用这个缓冲使用OpenGL应用编程接口来提供内容外,能像其它Qt部件那样的使用,。

Qt OpenGL模块的运作是一个与平台无关的Qt/C++的包装,这个包装则是和平台有关的GLX、WGL或AGL的C的应用编程接口。 其提供的功能则是和Mark Kilgard的GLUT库极为相似,但是Qt的OpenGL模块还有更多的非OpenGL特有的GUI机能,即它们都是Qt的应用编程接口。

安装

当你在X11中安装Qt时候,配置脚本将会自动检测你的系统上是否已安装了OpenGL的头文件和库,如果已正确安装了,在Qt的库中就会包括Qt OpenGL模块。(如果你的OpenGL头文件或库放置在一个非标准的目录下,你需要根据你的系统而修改config文件中的SYSCONF_CXXFLAGS_OPENGL和/或 SYSCONF_LFLAGS_OPENGL)。 对于OpenGL的一些配置需要线程生效,所以如果OpenGL没有被检测到,试一下configure -thread

当你在Windows中安装Qt时候,Qt的OpenGL模块总是被包含的。

Qt的OpenGL模块的使用没有授权给Qt专业版,如需要OpenGL支持的话,可以考虑升级为Qt企业版。

在X11上使用Mesa时请注意: Mesa 3.1之前的版本在库中使用的名为“MesaGL”和“MesaGLU”,而不是“GL”和“GLU”。如果你想使用Mesa 3.1之前的版本的话,你必须改变Makefile来使用这些库的名字。最简单的方法就是编辑config文件中的SYSCONF_LIBS_OPENGL行,将“-lGL -lGLU”改成“-lMesaGL -lMesaGLU”,然后再次运行“configure”。

QGL

在Qt中OpenGL提供支持的类为:

  • QGLWidget:一个容易使用的Qt部件,它提供了OpenGL场景。
  • QGLContext:封装了OpenGL提供的上下文。
  • QGLFormat:对于一个给定的上下文,指定特定的显示模式。
  • QGLColormap:在GL-index中处理编入索引的colormaps。

许多应用程序仅需要高等级的QGLWidget类。其它的QGL类提供了高级特性。X11的用户可能要阅读一下overlays中的注释。

参照OpenGL实例

QGL的文档假设你熟悉OpenGL编程。如果你在这方面是个新手的话,一个好的起点就是http://www.opengl.org/

*OpenGL是Silicon Graphics公司在美国和其它国家的注册商标。

Qt OpenGL三维绘图的更多相关文章

  1. 45.Qt openGL实现三维绘图

    main.cpp #include <QApplication> #include <iostream> #include "tetraheadron.h" ...

  2. 使用C语言实现二维,三维绘图算法(1)-透视投影

    使用C语言实现二维,三维绘图算法(1)-透视投影 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其实想想 ...

  3. 使用C语言实现二维,三维绘图算法(3)-简单的二维分形

    使用C语言实现二维,三维绘图算法(3)-简单的二维分形 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其 ...

  4. 使用C语言实现二维,三维绘图算法(2)-解析曲面的显示

    使用C语言实现二维,三维绘图算法(2)-解析曲面的显示 ---- 引言---- 每次使用OpenGL或DirectX写三维程序的时候, 都有一种隔靴搔痒的感觉, 对于内部的三维算法的实现不甚了解. 其 ...

  5. QT OpenGL中文教程在QT4版本后的错误代码更改(一)

    由于教程中说的已经够可以了,这里就不对代码进行分析了,有兴趣可以自己去看看.这个教程来源于原来的NeHeOpenGL中文教程 (http://www.yakergong.net/nehe/) ,但其有 ...

  6. ubuntu下配置qt+opengl+opencv

    原地址:http://www.cnblogs.com/aleny-liu/archive/2011/12/16/aleny-Qtnote1.html http://blog.csdn.net/jdh9 ...

  7. matlab的三维绘图和四维绘图

    一.三维绘图1.曲线图plot3(X1,Y1,Z1,...):以默认线性属性绘制三维点集(X1,Y1,Z1)确定的曲线plot3(X1,Y1,Z1,LineSpec):以参数LineSpec确定的线性 ...

  8. Matlab 三维绘图与统计绘图

    一. 三维绘图 p = : pi/: *pi; x = cos(p); y = sin(p); z = p; plot3(x,y,z) x = -:.:; %有-2为起点,2为递增步长,2为终止点 y ...

  9. Matlab三维绘图

    三维绘图 1 三维绘图指令 类 别 指 令 说 明 网状图 mesh, ezmesh 绘制立体网状图 meshc, ezmeshc 绘制带有等高线的网状图 meshz 绘制带有“围裙”的网状图 曲面图 ...

随机推荐

  1. structDemo1

    structDemo1 # include <iostream.h> # include <malloc.h> enum EType{ One = ,Tow,Three }; ...

  2. 基于opencv的小波变换

    基于opencv的小波变换 提供函数DWT()和IDWT(),前者完成任意层次的小波变换,后者完成任意层次的小波逆变换.输入图像要求必须是单通道浮点图像,对图像大小也有要求(1层变换:w,h必须是2的 ...

  3. hdu 4452

    今天模拟赛的一个模拟题: 每次看到这种题就感觉很繁琐: 这次静下心来写写,感觉还不错!就是很多错误,浪费了一点时间: 代码: #include<cstdio> #include<cs ...

  4. Docker日志自动化: ElasticSearch、Logstash、Kibana以及Logspout

    http://www.open-open.com/lib/view/open1432107136989.html

  5. JSON数据与JavaScript对象转换

    使用JSON时,最基本的工作就是JSON数据与JavaScript对象之间的互相转换.如浏览器 从服务器端获得JSON数据,然后转换为JavaScript对象在网页输出. SON: JavaScrip ...

  6. 【简译】jQuery对象的奥秘:基础介绍

    本文翻译自此文章 你有没有遇到过类似$(".cta").click(function(){})这样的JavaScript代码并且在想“$('#x')是什么”?如果这些对你想天书一样 ...

  7. 【HDOJ】4183 Pahom on Water

    就是一个网络流.red结点容量为2,查看最大流量是否大于等于2.对于条件2,把边反向加入建图.条件1,边正向加入建图. /* 4183 */ #include <iostream> #in ...

  8. POJ_3046_Ant_Counting_(动态规划,多重集组合数)

    描述 http://poj.org/problem?id=3046 n种蚂蚁,第i种有ai个,不同种类的蚂蚁可以相互区分,但同一种类的蚂蚁不能相互区分,从这些蚂蚁中取出s,s+1,s+2,...,b- ...

  9. cocos2d-x 添加自定义字体---中文,英文

    1: 找到字体   xxx.ttf 2: 在xcode工程的 Info.plist文件中添加key Fonts provided by application,   或者 UIAppFonts(raw ...

  10. 打开URL操作

    /* * 打开 url 的两种方法 */ public class OpenUrl { public static void main(String[] args) { String url = &q ...