网站大量收购独家精品文档,联系QQ:2885784924

QT编程技术详解.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
QT编程技术详解.ppt

QT对OpenGL的支持 目录 一、OpenGL概述 二、QtOpenGL编程 一、OpenGL概述 学习OpenGL编程所需要的基本知识: C语言、计算机图形学 一、OpenGL概述 1、OpenGL简介 2、OpenGL的库 3、OpenGL坐标系 4、OpenGL工作流程 OpenGL简介 OpenGL是一个到图形硬件的软件接口(Open Graphics Library),并且独立于硬件,它具有优秀的跨平台的特性。 可以在不同的平台如Windows、Unix、Linux、MacOS、OS/2等之间进行移植 OpenGL简介 OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。 OpenGL简介 CS游戏运行效果 OpenGL的库 OpenGL本身只提供了绘制基本几何图元的函数(如点、直线、多边形),程序员在绘制复杂模型时都是使用这些基本的绘制函数。但是建立在这基础之上,OpenGL提供了复杂的实用库函数,比如绘制二次曲面等。 OpenGL的库 一般的,OpenGL有三个常用的库,分别是gl.h,glu.h,glut.h 其它还分别有:辅助库(aux),窗口库(glx、agl、 wgl)和扩展函数库等 OpenGL的库 1. OpenGL核心库gl.h OpenGL的库 2. OpenGL实用库The OpenGL Utility Library (GLU) OpenGL的库 3. OpenGL工具库 OpenGL Utility Toolkit OpenGL的库 从核心库方面分析,OpenGL只是一个针对显卡的软件接口,也就是说,单纯的OpenGL除了绘制图形之外,没有任何的其它的功能。而事实上,一个三维的程序不可能是一副静态的图画,一个游戏不可能不和用户进行交互,由于OpenGL本身不提供这些功能,所以程序员需要一个可以应用OpenGL的编程环境(比如VC、Qt)及应用其核心之外的库。(因为OpenGL创建之初的宗旨就是:让画家专注于绘画) OpenGL坐标系 在三维空间中绘制物体,需要首先明确的就是坐标系。 OpenGL坐标系 1、世界坐标系 被显示的物体所在的空间的坐标系,称为世界坐标系。世界坐标系是始终固定不变的。 2、局部坐标系 以物体的中心为坐标原点的坐标系,称为局部坐标系。 3、屏幕坐标系 在显示器屏幕上的二维直角坐标系,称为屏幕坐标系。 OpenGL坐标系 OpenGL工作流程 OpenGL工作流程 OpenGL图形操作步骤 1)根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述(OpenGL中把:点、线、多边形、图像和位图都作为基本图形单元)。 2)把景物模型放在三维空间中的合适的位置,并且设置视点以观察所感兴趣的景观。 3)计算模型中所有物体的色彩,其中的色彩根据应用要求来确定,同时确定光照条件、纹理粘贴方式等。 4)把景物模型的数学描述及其色彩信息转换至计算机屏幕上的象素,这个过程也就是光栅化。   在这些步骤的执行过程中,OpenGL可能执行其他的一些操作,例如自动消隐处理等。另外,景物光栅化之后被送入帧缓冲器之前还可以根据需要对象素数据进行操作。 二、 QtOpenGL编程 1、OpenGL编程 2、QTOpenGL OpenGL编程示例 使用了glut.h的一个简单的OpenGL程序(VC环境) #include GL/glut.h #include stdlib.h void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glBegin(GL_POLYGON); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); glFlush (); } OpenGL编程示例 int main(int argc, char** argv) { glutInit(argc, argv); glutInitDisplayMode (GLUT_SINGLE | LUT_RGB); glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100);

文档评论(0)

000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档