详解Qt写 OpenGL入门示例

详解Qt写 OpenGL入门示例
详解Qt写 OpenGL入门示例

详解 Qt 写 OpenGL 入门示例

2011-07-01 17:12 佚名互联网我要评论(0)字号:T | T

本文介绍的是详解 Qt 写 OpenGL 入门示例,不多说,先来看详细内容。

AD:

Qt 写OpenGL 入门示例是本文所介绍的内容。其实我个人是很喜欢玩游戏的,为什么呢?只是因为我还无法制作游戏.所以,以前就看过一些...东西. 比如directx/opengl. 可惜无法入门,而当年拼命的记忆那个windows api版的hello world(vc++自动生成)...在一个星期后便忘记了.使得我对windows上的编程充满了阴影(在若干年后,我终于明白你不需要去记忆具体api, 因为环境会给你提示) - windows都没入门, 怎么开始directx哦?(不过无数次的hello world,也有好处,就是让我明白了windows平台的消息循环机制...这让我在若干年后在看到qt的app.exec()时,心有灵犀的想, 哦,进入了消息循环了...)

后来自然就看看qt,看看c++、PHP就不说了,一直搞这个的)等. 还有有比如SDL一类的搞搞,但始终不得其门而入,qt有自带的提供给opengl的窗口类的. 在我以前, 反正也试过,这样那样的错误就放弃了...

不过不知道为什么, 现在却很简单,(可能做任何事情都有简单和难的时候,只是未到时间吧).,假如你也想玩玩qt? opengl的话, 那么先具体下面一些东西:

(1)OpenGL编程指南 (书, 里面有代码的,咋们参考一些)

(2)装了qt库和环境(windows下qt里应该有自带opengl, 所以opengl的库就不提了)

(3)编译器

那么我们就开始了...反正是很简单的入门...写个main.cpp, 如下

1.yarco@coto?~/Documents/test/1?$?cat?main.cpp ?

2.#include??

3.#include?"MyWidget.h" ?

4.int?main(int?argc,?char*?argv[])?//?感慨一下:?万年不变的argc,?argv阿,让

每个程序员都感到亲切 ?

5.{ ?

6.????????QApplication?app(argc,?argv); ?

7.????????MyWidget?w; ?

8.????????w.show(); ?

9.????????return?app.exec(); ?

10.}?

然后就是我们自己定义的类MyWidget:

1.yarco@coto?~/Documents/test/1?$?cat?MyWidget.h ?

2.#include??

3.class?MyWidget?:?public?QGLWidget ?

4.{ ?

5.public: ?

6.????????MyWidget(QWidget*?parent?=?0)?:?QGLWidget(parent)?{} ?

7.protected: ?

8.????????void?initializeGL(); ?

9.????????void?resizeGL(int?w,?int?h); ?

10.????????void?paintGL(); ?

11.}; ?

12.//?qt文档里的哦 ?

13.//?三个xxxGL必须实现 ?

14.//?也就是在这里,我们就可以使用opengl的指令了哦... ?

15.yarco@coto?~/Documents/test/1?$?cat?MyWidget.cpp ?

16.#include?"MyWidget.h" ?

17.void?MyWidget::initializeGL() ?

18.{ ?

19.} ?

20.void?MyWidget::resizeGL(int?w,?int?h) ?

21.{ ?

22.} ?

23.void?MyWidget::paintGL() ?

24.{ ?

25.????????renderText(20,?100,?"Hello,?My?first?OpenGL?app."); ?

26.} ?

27.//?啥都没有,只有调用qt提供的renderText来输出文字?

然后就是qt的编译步骤了...(不详细描述)

结果的效果图如下:

小结:详解 Qt 写OpenGL 入门示例的内容介绍完了,希望本文对你有所帮助!

OpenGL入门学习之七——使用光照来表现立体感

OpenGL入门学习之七——使用光照来表现立体感 2009-01-07 11:49 从生理学的角度上讲,眼睛之所以看见各种物体,是因为光线直接或间接的从它们那里到达了眼睛。人类对于光线强弱的变化的反应,比对于颜色变化的反应来得灵敏。因此对于人类而言,光线很大程度上表现了物体的立体感。 请看图1,图中绘制了两个大小相同的白色球体。其中右边的一个是没有使用任何光照效果的,它看起来就像是一个二维的圆盘,没有立体的感觉。左边的一个是使用了简单的光照效果的,我们通过光照的层次,很容易的认为它是一个三维的物体。 图1 OpenGL对于光照效果提供了直接的支持,只需要调用某些函数,便可以实现简单的光照效果。但是在这之前,我们有必要了解一些基础知识。 一、建立光照模型 在现实生活中,某些物体本身就会发光,例如太阳、电灯等,而其它物体虽然不会发光,但可以反射来自其它物体的光。这些光通过各种方式传播,最后进入我们的眼睛——于是一幅画面就在我们的眼中形成了。 就目前的计算机而言,要准确模拟各种光线的传播,这是无法做到的事情。比如一个四面都是粗糙墙壁的房间,一盏电灯所发出的光线在很短的时间内就会经过非常多次的反射,最终几乎布满了房间的每一个角落,这一过程即使使用目前运算速度最快的计算机,也无法精确模拟。不过,我们并不需要精确的模拟各种光线,只需要找到一种近似的计算方式,使它的最终结果让我们的眼睛认为它是真实的,这就可以了。 OpenGL在处理光照时采用这样一种近似:把光照系统分为三部分,分别是光源、材质和光照环境。光源就是光的来源,可以是前面所说的太阳或者电灯等。材质是指接受光照的各种物体的表面,由于物体如何反射光线只由物体表面决定(OpenGL中没有考虑光的折射),材质特点就决定了物体反射光线的特点。光照环境是指一些额外的参数,它们将影响最终的光照画面,比如一些光线经过多次反射后,已经无法分清它究竟是由哪个光源发出,这时,指定一个“环境亮度”参数,可以使最后形成的画面更接近于真实情况。

Qt Creator 快速入门 选择题 霍亚飞版

1.以下关于QT的描述正确的是: a.是一个不跨平台的C++图形用户界面 b.由挪威TrollTech公司出品 c.只支持Unix、Linux d.QT API和开发工具对所支持的平台是不一致的2.以下关于QT的描述不正确的是: a.QT支持2D图形渲染 b.QT支持3D图形渲染 c.QT支持OpenGL d.QT不支持XML 3.下关于不正确的是: a.是面向嵌入式系统的Qt版本 b.是Qt的嵌入式窗口 c.基于Windows平台的开发工具 d.是完整的自包含C++ GUI的开发工具 4.内部对字符集的处理采用以下哪个标准: a.UNICODE b.ASCII c.GB2312 d.ISO 8859-1 5.以下关于Qt描述不正确的是 a.是基于面向对象的C++语言 b.提供了signal和slot的对象通信机制 c.有可查询和可设计属性 d.没有字符国际化 6.以下描述正确的是: a.标准的C++对象模型可有效的支持运行时参数 b.标准的C++对象模型的静态特性十分灵活 c.图形用户界面编程无需运行得高效 d.图形用户界面编程无需运行得高灵活性 7.以下不是QT增加的特性: a.有效的对象通信signal和slot b.可查询和可设计的对象 c.事件及事件过滤器 d.不使用指针 8.以下描述正确的是: a.元对象系统可以对信号使用模板 b.元对象系统可以对槽使用模板 c.Qt可在多个平台的应用程序中完全应用模板 d.Qt不能在多个平台的应用程序中完全应用模板9.以下关于moc叙述正确的是:

a.moc即Mult Object Compiler b.可产生能被任何标准C++编译访问的附加C++代码 c.moc必须手动调用 d.类声明中有无Q_OBJECT无所谓 10.以下关于信号和槽的描述正确的是: a.用于SOCKET网络通信 b.用于UDP网络通信 c.用于对象间通信 d.用于串口通信 11.以下关于信号/槽的叙述不正确的是: a.信号与槽通过connected函数任意相连 b.信号/槽机制在QObject类中实现 c.从QWidget类继承的所有类可以包含信号和槽 d.当对象状态变化时信号被发送,对象不关心是否有其他对象接收到该信 号 12.以下类声明中有几处错误? class M : public Qobject { public : M ( ) ; int value ( ) const { return va ; } public slot : void setValue ( int ) ; signals : void valueChanged ( int ) ; private: int va ; }; a. 5 b. 4 c. 3 d. 2 13.设有如下声明 void M : : setValue ( int v ) { if ( v != va ) { va = v ; emit valueChanged ( v ) ; } }

详解Qt写OpenGL入门示例

详解 Qt 写 OpenGL 入门示例 2011-07-01 17:12 佚名互联网字号: | 本文介绍的是详解 Qt 写 OpenGL 入门示例,不多说,先来看详细内容。 AD: Qt 写OpenGL 入门示例是本文所介绍的内容。其实我个人是很喜欢玩游戏的,为什么呢?只是因为我还无法制作游戏.所以,以前就看过一些...东西. 比如directx/opengl. 可惜无法入门,而当年拼命的记忆那个windows api版的hello world(vc++自动生成)...在一个星期后便忘记了.使得我对上的编程充满了阴影(在若干年后,我终于明白你不需要去记忆具体api, 因为环境会给你提示) - 都没入门, 怎么开始directx哦?(不过无数次的hello world,也有好处,就是让我明白了windows平台的消息循环机制...这让我在若干年后在看到qt 的()时,心有灵犀的想, 哦,进入了消息循环了...) 后来自然就看看qt,看看c++、PHP就不说了,一直搞这个的)等. 还有有比如SDL一类的搞搞,但始终不得其门而入,qt有自带的提供给opengl的窗口类的. 在我以前, 反正也试过,这样那样的错误就放弃了... 不过不知道为什么, 现在却很简单,(可能做任何事情都有简单和难的时候,只是未到时间吧).,假如你也想玩玩qt? opengl的话, 那么先具体下面一些东西: (1)OpenGL编程指南 (书, 里面有代码的,咋们参考一些) (2)装了qt库和环境(windows下qt里应该有自带opengl, 所以opengl的库就不提了) (3)编译器 那么我们就开始了...反正是很简单的入门...写个, 如下 1.yarco@coto?~/Documents/test/1?$?cat? ? 2.#include?? 3.#include?"" ? 1.int?main(int?argc,?char*?argv[])?. ? 2.yarco@coto?~/Documents/test/1?$?cat? ? 3.#include?"" ? 4.void?MyWidget::initializeGL() ? 5.{ ? 6.} ? 7.void?MyWidget::resizeGL(int?w,?int?h) ? 8.{ ? 9.} ? 10.void?MyWidget::paintGL() ? 11.{ ? 12.????????renderText(20,?100,?"Hello,?My?first?OpenGL?app."); ? 13.} ? .(不详细描述)

OpenGL学习入门之VS2010环境配置

OpenGL学习入门之VS2010环境配置OpenGL开发环境简介 基于OpenGL标准开发的应用程序运行时需有动态链接库OpenGL32.DLL、Glu32.DLL,这两个文件在安装Windows NT时已自动装载到C:\WINDOWS\SYSTEM32目录下(这里假定用户将Windows NT安装在C盘上)。OpenGL的图形库函数封装在动态链接库OpenGL32.DLL中,开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。OpenGL 函数命令方式十分有规律,每个库函数均有前缀gl、glu、aux,分别表示该函数属于OpenGL 基本库、实用库或辅助库。Windows NT下的OpenGL包含了100多个核心函数,均以gl 作为前缀,同时还支持另外四类函数: OpenGL实用库函数:43个,以glu作为前缀; OpenGL辅助库函数:31个,以aux作为前缀; Windows专用库函数(WGL):6个,以wgl作为前缀; Win32API函数(WGL):5个,无前缀。 安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) https://www.360docs.net/doc/0b5283175.html,/resources/libraries/glut/glutdlls37beta.zip VS环境配置 将下载的压缩包解开,将得到5个文件(glut.dll, glut32.dll, glut.lib, glut32.lib,glut.h)

(1)把glut.h复制到x:\Program Files\Microsoft\Visual Studio 10.0\VC\include\GL文件夹中,如果没有GL这个文件夹则可以自己新建一个。(x是你安装VS的盘符号)(2)把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(即与include并排的lib文件夹下)。 (3)把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32) (注:如在开发应用程序时用到OpenGL辅助库函数,则还需下载相应动态链接库,包含glaux.dll, glaux.lib, glaux.h,相应步骤同上) 第一个OpenGL程序 首先创建工程,其步骤如下: (1)创建一个Win32 Console Application。 (2)链接OpenGL libraries。在Visual C++中先单击Projec / Settings,找到Link标签,最后在Object/library modules 中加上OpenGL32.lib;GLu32.lib;glut.lib;glut32.lib 。 (3)单击Project / Settings中的C/C++标签,将Preprocessor definitions 中的_CONSOLE 改为__WINDOWS。 (4)单击Project / Settings中的General标签,将Character Set属性值改变为Not Set,最后单击OK。 现在你可以把下面的例子拷贝到工程中去,编译运行。你可以看到一个彩色的三角形,如图1所示。

OpenGL入门学习——第三课 绘制几何图形的一些细节问题

OpenGL入门学习——第三课绘制几何图形的一些细节问题 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处。例如:点太小,难以看清楚;直线也太细,不舒服;或者想画虚线,但不知道方法只能用许多短直线,甚至用点组合而成。 这些问题将在本课中被解决。 下面就点、直线、多边形分别讨论。 1、关于点 点的大小默认为1个像素,但也可以改变之。改变的命令为glPointSize,其函数原型如下:void glPointSize(GLfloat size); size必须大于0.0f,默认值为1.0f,单位为“像素”。 注意:对于具体的OpenGL实现,点的大小都有个限度的,如果设置的size超过最大值,则设置可能会有问题。 例子: void myDisplay(void) { glClear(GL_COLOR_BUFFER_BIT); glPointSize(5.0f); glBegin(GL_POINTS); glVertex2f(0.0f, 0.0f); glVertex2f(0.5f, 0.5f); glEnd(); glFlush(); } 2、关于直线 (1)直线可以指定宽度: void glLineWidth(GLfloat width); 其用法跟glPointSize类似。 (2)画虚线。 首先,使用glEnable(GL_LINE_STIPPLE);来启动虚线模式(使用glDisable(GL_LINE_STIPPLE)可以关闭之)。 然后,使用glLineStipple来设置虚线的样式。 void glLineStipple(GLint factor, GLushort pattern); pattern是由1和0组成的长度为16的序列,从最低位开始看,如果为1,则直线上接下来应该画的factor个点将被画为实的;如果为0,则直线上接下来应该画的factor个点将被画为虚的。 以下是一些例子: https://www.360docs.net/doc/0b5283175.html,/upfile/200608/20060801172519.gif 声明:该图片来自https://www.360docs.net/doc/0b5283175.html,,该图片是《OpenGL编程指南》一书的附图,由于该书的旧版(第一版,1994年)已经流传于网络,我希望没有触及到版权问题。 示例代码:

Qt开发入门教程02_QtE开发基础

QtE开发基础

?嵌入式GUI特点及种类 ?安装与建立QtE桌面运行环境?QtE Hello程序

?嵌入式GUI特点及种类 ?嵌入式系统对GUI的基本要求包括轻型、占用资源少、高性能、高可 靠性及可配置。 ?尽管实时嵌入式系统对GUI的需求越来越明显,但目前GUI的实现方法 各有不同,主要有以下几点: ?某些大型厂商有能力自己开发满足自身需要的GUI系统。 ?某些厂商没有将GUI作为一个软件层从应用程序中剥离,GUI的支 持逻辑由应用程序自己来负责。 ?采用某些比较成熟的GUI系统,比如MiniGUI,MicroWindows 或其他GUI系统。

?MiniGUI ?MiniGUI由原清华大学教师魏永明先生开发,是一种面向嵌入式系 统或实时系统的图形用户界面支持系统。它主要运行于Linux控制台,实际可以运行在任何一种具有POSIX线程支持的POSIX兼容系 统上。

?MicroWindows ?MicroWindows是一个著名的开放源码的嵌入式GUI软件。它提供了 现代图形窗口系统的一些特性。MicroWindows API接口支持类 Win32API,接口试图和Win32完全兼容,而且还实现了一些Win32用户模块功能。

?Qt/Embedded ?Qt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界 面的工具包。Qt是挪威Trolltech软件公司的产品,它为各种系统提供图形用户界面的工具包,QtE就是Qt的嵌入式版本。 ?使用QtE,开发者可以: ?用QtE开发的应用程序要移植到不同平台时,只需要重新编译代 码,而不需要对代码进行修改。 ?可以随意设置程序界面的外观。 ?可以方便地为程序连接数据库。 ?可以使程序本地化。 ?可以将程序与Java集成。

计算机图形学试验指导一–OpenGL基础

计算机图形学实验指导(一) –OpenGL基础 1.综述 这次试验的目的主要是使大家初步熟悉OpenGL这一图形系统的用法,编程平台是Visual C++,它对OpenGL提供了完备的支持。 尽管OpenGL包括渲染命令,但却独立于任何窗口系统和操作系统。因此,OpenGL并不包括用来打开窗口以及从键盘或鼠标读取事件的命令。在这里,我们应用GLUT库简化Windows窗口操作。 2.准备GLUT库 下载glut压缩包后,解压,把glut32.dll放在Windows的system32目录下,将glut32.lib 放在C:\program files\Microsoft Visual Studio\VC98\Lib目录中,将glut.h放在C:\program files\Microsoft Visual Studio\VC98\Include\GL目录中 2.在VC中新建项目 新建一个项目。 选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,回车即可。VC为你创建一个工作区(WorkSpace),你的项目就放在这个工作区里。 为项目添加文件 为了使用OpenGL,我们需要在项目中加入相关的Lib文件:glut32.lib 选中菜单Project->Settings项,在link选项卡中的Object/Library modules栏中加入glut32.lib。 选择菜单File中的New选项,弹出一个分页的对话框,选中页Files中的C++sourcefile,填入文件名,钩选添加到刚才建的那个工程里,然后就可以开始编程了。 3.一个OpenGL的例子 #include //初始化OpenGL void init(void) { glClearColor(0.0f, 0.0f, 0.0f, 0.0f);//设置背景颜色 glShadeModel(GL_FLAT);//设置明暗处理 } //主要的绘制过程 void display(void) { glClear(GL_COLOR_BUFFER_BIT);//清除颜色缓存 glBegin(GL_LINES);//开始画直线 glColor3f(1.0f, 1.0f, 1.0f);//设置颜色为白色 glVertex2f(30.0f, 30.0f);//第一根线的两个端点 glVertex2f(200.0f, 400.0f);

Qt Creator快速入门期末试卷及答案 霍亚飞版

Qt复习提纲 Qt基础 1、以下关于QT的描述正确的是____B_____ A是一个不跨平台的C++图形用户界面 B由挪威TrollTech公司出品 C只支持Unix、Linux D QT API和开发工具对所支持的平台是不一致的 2、以下关于Qt描述不正确的是_____D__ A是基于面向对象的C++语言 B提供了signal和slot的对象通信机制 C有可查询和可设计属性 D没有字符国际化 3、以下不是QT增加的特性_____D___ A有效的对象通信signal和slot B可查询和可设计的对象 C事件及事件过滤器 D不使用指针 4、以下关于信号和槽的描述正确的是__C_____ A用于SOCKET网络通信 B用于UDP网络通信 C用于对象间通信 D用于串口通信 5、以下关于信号/槽的叙述不正确的是__B?______ A信号与槽通过connected函数任意相连 B信号/槽机制在QObject类中实现 C从QWidget类继承的所有类可以包含信号和槽 D当对象状态变化时信号被发送,对象不关心是否有其他对象接收到该信号 6、关于布局功能的叙述,以下正确的是____D____ A在布局空间中布置子窗口部件 B设置子窗口部件间的空隙 C管理在布局空间中布置子窗口部件 D以上都对 7、布局管理器包括____D____ A QHBox B QVBox C QGrid D 以上全有 8、以下叙述正确的是__D_______ A QHBox允许子窗口部件按水平、垂直和网格排列 B QVBox允许子窗口部件按水平、垂直和网格排列 C QGrid允许子窗口部件按水平、垂直和网格排列 D 以上全不对 9、创建一个窗体对象后,要想显示该窗体,需要调用对象的___show_______方法,要想隐藏该窗体需要调用对象的____hide______方法。

_OpenGL入门教程

OpenGL入门教程 1.第一课: 说起编程作图,大概还有很多人想起TC的#include 吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率、16色来做吗?显然是不行的。 本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物。 OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。 1、与C语言紧密结合。 OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。 2、强大的可移植性。 微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机)。而OpenGL不仅用于Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。并且,OpenGL的基本命令都做到了硬件无关,甚至是平台无关。 3、高性能的图形渲染。 OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。 总之,OpenGL是一个很NB的图形软件接口。至于究竟有多NB,去看看DOOM3和QUAKE4等专业游戏就知道了。 OpenGL官方网站(英文) https://www.360docs.net/doc/0b5283175.html, 下面我将对Windows下的OpenGL编程进行简单介绍。 学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL 的。但这里我们选择Visual Studio 2005作为学习OpenGL的环境。 第二步,安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) https://www.360docs.net/doc/0b5283175.html,/resources/libraries/glut/glutdlls37beta.zip 无法从以上地址下载的话请使用下面的连接: https://www.360docs.net/doc/0b5283175.html,/upfile/200607311626279.zip Windows环境下安装GLUT的步骤: 1、将下载的压缩包解开,将得到5个文件

Qt-4.6动画Animation快速入门三字决

Qt-4.6新增了Animation Framework(动画框架),让我们能够方便的写一些生动的程序。不必像以前的版本一样,所有的控件都枯燥的呆在伟大光荣的QLayout里,也许它们可以唱个歌,跳个舞。 前面写过一篇文章Qt动画效果的幕后英雄:QTimeLine,介绍了怎么利用QTimeLine写一动画程序。今天又再重申前文里的一句话,所谓动画就是在一个时间段内的不同时间点有不同的状态,只要定义好这样状态,实现动画就是水到渠成的事情。当然做这件事情,最好用的就是状态机,没错Qt-4.6.0提供了QStateMachine类,不过今天我要讲的三字决要简单一些。 第一决:QPropertyAnimation QPropertyAnimation用于和QObject中的属性properties进行通信,比如QWidget的大小,坐标等。来看代码 QPropertyAnimation *animation = new QPropertyAnimation(myWidget, "geometry"); animation->setDuration(10000); animation->setStartValue(QRect(0, 0, 100, 30)); animation->setEndValue(QRect(250, 250, 100, 30)); animation->start(); 第一行创建的QPropertyAnimation对象关联了myWidget这个窗体的几何属性。后面的几句分别设置了这个动画的时长,起始坐标和结束坐标。剩下的事情就交改QProperAnimation 去做就行了。然后调用start()启动它。没错,五行代码就完成了一个完成了一个自动从一个坐标点移动到另一个坐标点的窗体。下面我给出一个可以运行的代码,是一只小鸟从下角移到中间的一个小动画,当然你得自己准备这个同名的图片:) #include #include #include #include int m ain(int argc,char *argv[]){ QApplication app(argc,argv); QWidget *w=new QWidget(); w->resize(300,400); QPixmap birdimg=QPixmap("twitter-bird.png").scaled(40,40); QLabel *bird_1=new QLabel(w); bird_1->setPixmap(birdimg); QPropertyAnimation *anim1=new QPropertyAnimation(bird_1, "pos"); anim1->set Duration(2000);

OpenGL入门C++教程

OpenGL入门c++教程 1.第一课: 说起编程作图,大概还有很多人想起TC的#include 吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率、16色来做吗?显然是不行的。 本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物。 OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。 1、与C语言紧密结合。 OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。 2、强大的可移植性。 微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机)。而OpenGL不仅用于Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。并且,OpenGL的基本命令都做到了硬件无关,甚至是平台无关。 3、高性能的图形渲染。 OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。 总之,OpenGL是一个很NB的图形软件接口。至于究竟有多NB,去看看DOOM3和QUAKE4等专业游戏就知道了。 OpenGL官方网站(英文) https://www.360docs.net/doc/0b5283175.html, 下面我将对Windows下的OpenGL编程进行简单介绍。 学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL 的。但这里我们选择Visual Studio 2005作为学习OpenGL的环境。 第二步,安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) https://www.360docs.net/doc/0b5283175.html,/resources/libraries/glut/glutdlls37beta.zip 无法从以上地址下载的话请使用下面的连接: https://www.360docs.net/doc/0b5283175.html,/upfile/200607311626279.zip Windows环境下安装GLUT的步骤: 1、将下载的压缩包解开,将得到5个文件 2、在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\PlatformSDK\include\gl文件夹”)。把解压得到的glut.h放到这个文件夹。 3、把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\lib”文件夹)。

OpenGL入门学习——第一课 编写第一个OpenGL程序

OpenGL入门学习——第一课编写第一个OpenGL程序 OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。 1、与C语言紧密结合。 OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL 是容易理解和学习的。如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。 2、强大的可移植性。 微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机)。而OpenGL不仅用于Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。并且,OpenGL的基本命令都做到了硬件无关,甚至是平台无关。 3、高性能的图形渲染。 OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。 总之,OpenGL是一个很NB的图形软件接口。至于究竟有多NB,去看看DOOM3和QUAKE4等专业游戏就知道了。 OpenGL官方网站(英文) https://www.360docs.net/doc/0b5283175.html, 下面我将对Windows下的OpenGL编程进行简单介绍。 学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。但这里我们选择Visual Studio 2005作为学习OpenGL的环境。 第二步,安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。Windows环境下的GLUT下载地址:(大小约为150k) https://www.360docs.net/doc/0b5283175.html,/resources/libraries/glut/glutdlls37beta.zip 无法从以上地址下载的话请使用下面的连接: https://www.360docs.net/doc/0b5283175.html,/upfile/200607311626279.zip Windows环境下安装GLUT的步骤: 1、将下载的压缩包解开,将得到5个文件 2、在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\PlatformSDK\include\gl文件夹”)。把解压得到的glut.h放到这个文件夹。 3、把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\lib”文件夹)。 4、把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32) 第三步,建立一个OpenGL工程 这里以VisualStudio2005为例。 选择File->New->Project,然后选择Win32 Console Application,选择一个名字,然后按OK。

openggl画图初学必看

OpenGL作图非常方便,故日益流行,但对许多人来说,是在微机上进行的,首先碰到的问题是,如何适应微机环境。这往往是最关键的一步,虽然也是最初级的。一般的,我不建议使用glut 包.那样难以充分发挥Windows 的界面上的功能. 下面介绍如何在VC++ 上进行OpenGL 编程。OpenGL 绘图的一般过程可以看作这样的,先用OpenGL 语句在OpenGL 的绘图环境RenderContext (RC)中画好图, 然后再通过一个Swap buffer 的过程把图传给操作系统的绘图环境DeviceContext (DC)中,实实在在地画出到屏幕上. 下面以画一条Bezier 曲线为例,详细介绍VC++ 上OpenGL编程的方法。文中给出了详细注释,以便给初学者明确的指引。一步一步地按所述去做,你将顺利地画出第一个OpenGL 平台上的图形来。 一、产生程序框架Test.dsw New Project | MFC Application Wizard (EXE) | "Test" | OK *注* : 加“”者指要手工敲入的字串 二、导入Bezier 曲线类的文件 用下面方法产生BezierCurve.h BezierCurve.cpp 两个文件: WorkSpace | ClassView | Test Classes| <右击弹出> New Class | Generic Class(不用MFC类) | "CBezierCurve" | OK 三、编辑好Bezier 曲线类的定义与实现 写好下面两个文件: BezierCurve.h BezierCurve.cpp 四、设置编译环境: 1. 在BezierCurve.h 和TestView.h 内各加上: #include #include #include 2. 在集成环境中 Project | Settings | Link | Object/library module | "opengl32.lib glu32.lib glaux.lib" | OK

Qt Creator 快速入门实验讲义(带目录)

《Qt Creator快速入门》第2版 实验讲义 2014年6月

目录 实验1 Qt开发环境的搭建......................................................- 2 - 目的与要求..................................................................................................................- 2 - 实验准备......................................................................................................................- 2 - 实验内容......................................................................................................................- 2 - 实验2 编译和发布Qt程序...................................................- 16 - 目的与要求................................................................................................................- 16 - 实验准备....................................................................................................................- 16 - 实验内容....................................................................................................................- 16 - 实验3 使用Qt资源文件.......................................................- 25 - 目的与要求................................................................................................................- 25 - 实验准备....................................................................................................................- 25 - 实验内容....................................................................................................................- 25 - 实验4 创建登陆对话框..........................................................- 30 - 目的与要求................................................................................................................- 30 - 实验准备....................................................................................................................- 30 - 实验内容....................................................................................................................- 30 - 实验5 定时器和随机数..........................................................- 35 - 目的与要求................................................................................................................- 35 - 实验准备....................................................................................................................- 35 - 实验内容....................................................................................................................- 35 - 实验6 编译MySQL数据库驱动............................................- 38 - 目的与要求................................................................................................................- 38 - 实验准备....................................................................................................................- 38 - 实验内容....................................................................................................................- 38 - 实验7 数据库基本操作............................................................- 49 - 目的与要求................................................................................................................- 49 - 实验准备....................................................................................................................- 49 - 实验内容....................................................................................................................- 49 - 实验8 Qt数据库应用编程(综合设计)................................- 55 - 目的与要求................................................................................................................- 55 - 实验准备....................................................................................................................- 55 - 实验内容....................................................................................................................- 55 -

初学OpenGL:什么是绘制上下文

初学OpenGL:什么是绘制上下文 什么是绘制上下文(Rendering Context) 初学OpenGL,打开红宝书,会告诉你OpenGL是个状态机,OpenGL采用了客户端-服务器模式,那时觉得好抽象,直到后来了解了绘制上下文才把这些联系起来。我们可以认为每一个硬件GPU是个服务器,每一个绘制上下文对应于申请的一个客户端,一个客户端维护着一套状态机,如果两个窗口分别对应两个不同的绘制上下文,则两个窗口彼此状态独立。申请绘制上下文,意味着系统资源的申请,每个绘制上下文还是需要不少资源的,记得曾经试过在chrome的TAB页不断加载WebGL页面,由于WebGL使用的是OpenGL ES,同样需要绘制上下文,当加载三十多个页面的时候,Chrome整个崩溃了。 所有的OpenGL调用,都需要指定是在哪个上下文环境下调用的。不同的上下文中,同样的资源ID,可能对应于各自上下文中不同类型的资源。 不同的操作系统,都有各自的绘制上下文创建、和设置当前绘制上下文的API。 如何创建绘制上下文 我们一般做Demo程序,都会使用GLUT,所以很多人可能并没有自己创建过绘制上下文。GLUT的函数GlutCreateWindow除了创建了一个窗口,同时还创建了一个绘制上下文,并将创建的绘制上下文设置为当前的绘制上下文。对于Windows平台,首先创建一个设备上下文(Device Context,DC),以DC为输入,可以创建一个绘制上下文。创建绘制上下文以后,调用MakeCurrent,将创建的上下文设置为当前的绘制上下文。 创建了绘制上下文,并设置为当前上下文以后,还不能使用OpenGL最新的特性,调用OpenGL 1.1以后的API仍然会崩溃。一般我们使用Glew库,调用glewInit(),得到OpenGL 随显卡驱动一起发布的新特性的函数入口地址。 绘制上下文和线程 两个线程同时MakeCurrent到同一个绘制上下文,会导致程序崩溃。大型程序的一般做法是申请一条线程,专门用于绘制,创建线程时,为该绘制线程申请一个绘制上下文,一直

相关文档
最新文档