c语言与opengl介绍.ppt

上传人:牧羊曲112 文档编号:5574572 上传时间:2023-07-29 格式:PPT 页数:39 大小:1.56MB
返回 下载 相关 举报
c语言与opengl介绍.ppt_第1页
第1页 / 共39页
c语言与opengl介绍.ppt_第2页
第2页 / 共39页
c语言与opengl介绍.ppt_第3页
第3页 / 共39页
c语言与opengl介绍.ppt_第4页
第4页 / 共39页
c语言与opengl介绍.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《c语言与opengl介绍.ppt》由会员分享,可在线阅读,更多相关《c语言与opengl介绍.ppt(39页珍藏版)》请在三一办公上搜索。

1、计算机图形学,上海大学工业设计教研室 范乐明,计算机图形学,http:/,计算机图形学,第三章 OpenGL编程基础,3.1概述3.2OpenGL工作结构3.3OpenGL的功能3.4OpenGL工作流程3.5OpenGL图形操作步骤3.6OpenGL的组成3.7OpenGL数据类型3.8OpenGL函数命名约定3.9OpenGL程序,计算机图形学,概述,20世纪90年代,人们发现复杂的数据以视觉的形式出现最容易理解,三维图形得以迅猛发展,各种三维图形工作软件包相继推出,如PHIGS、PEX、RenderMan等OpenGL在交互式三维图形建模能力、外部设备管理以及编程方便性上由无以伦比的优势

2、,计算机图形学,OpenGL对GL的进一步发展而来由于其高度可用性,几十家大公司接受其为标准图形软件接口OpenGL ARB(OpenGL Architecture Review Board,即OpenGL体系结构审查委员会)成员有,SGI,Microsoft(Direct 3D),Intel,IBM,SUN,HP,AT&T的UNIX软件实验室等OpenGL已经成为高性能图形和交互式视景处理的工业标准之一(D3D是其竞争对手),计算机图形学,作为图形软件接口,OpenGL由几百个指令或函数组成。对程序员而言,OpenGL是一些指令或函数的集合。一个使用OpenGL的典型描绘程序是首先在帧缓存中

3、定义一个窗口然后在此窗口中进行各种操作,计算机图形学,对于OpenGL的实现者而言,OpenGL是影响图形硬件操作的指令集合。图形硬件可以包括不同级别 的图形加速器,从画二维的直线到多边形的网栅系统到包含能够转换和计算几何数据的浮点处理器如果只有一个帧缓存,OpenGL不得不几乎在CPU上实现对象的描绘。,计算机图形学,OpenGL的网络透明性在客户/服务器体系结构中,OpenGL允许本地和远程绘图,可以通过网络发送图形消息至远程机,也可以发送图形信息至多个显示屏幕。透过网络不会发生编译错误。,计算机图形学,优秀的专业化3D图形应用程序设计界面,API(Applied Programmer I

4、nterface)OpenGL 2.0已经出现不同公司由于开发目的不同,版本不一样。TGS OpenGL InventorSUN 面向Solaris的OpenGL基础图形库,计算机图形学,适用与广泛的计算环境,从个人计算机到工作站和超级计算机,OpenGL都能实现高性能的三维图形功能具有广泛可移植性成为三维图形的开发标准,计算机图形学,3.2 OpenGL的工作结构,客户/服务器模式客户(试图用OpenGL进行绘制工作的应用程序)向服务器(OpenGL)内核发布命令,这些命令是由服务器来解释的。大多数情况客户与服务器是运行在同一台机器上,但基于客户/服务器模式,在网络环境中很容易使用OpenG

5、L,具有网络透明性,计算机图形学,OpenGL在Windows环境中的工作过程,客户应用程序,OpenGL DLL,服务器 DLL,Win32 DDI,视频驱动程序,客户应用程序,服务器,客户机,计算机图形学,3.3 OpenGL的功能,模型绘制模型观察颜色模式指定光照应用图像效果增强位图和图像处理纹理映射实时动画交互技术,计算机图形学,3.4OpenGL工作流程,图元操作图形控制OpenGL指令解释模型OpenGL基本操作,计算机图形学,图元操作OpenGL提供多种模式绘制图元(Primitive),一种模式的设置一般不会影响其他图元的设置,指令总是会被顺序处理的。图元由一组顶点定义。该组顶

6、点既可以只包含一个顶点,也可以包含多个顶点。顶点的说明由位置坐标、颜色值、法向量和纹理坐标组成。每个顶点根据其是二维顶点和三维顶点而可以分别使用2个坐标、3个坐标或4个坐标。在OpenGL中,几何对象是根据glBegin()/glEnd()函数对之间所包含的一系列指定顶点的位置坐标、颜色值、法向量值和纹理坐标画出的。这样的几何对象有点线段、循环线段、分离线段、多边形、三角形、三角形扇、分离的三角形、四边形及分离的四边形,计算机图形学,2.图形控制提供诸如变换矩阵、光照、反走样方法、象素操作等来控制二维和三维图形的绘制,但不提供一个描述或简历复杂几何物体的手段。OpenGL提供的是怎样画复杂物体

7、的机制,而非描绘复杂物体本身的面面俱到的工具,它是一个绘制系统而非造型系统。,计算机图形学,3.OpenGL指令解释模型OpenGL的指令解释模型是客户/服务器模式,计算机图形学,4.OpenGL的基本操作用户指令从左侧进入OpenGL。分为两部分,计算机图形学,OpenGL绘制原理图,几何顶点数据,图像象素数据,显示列表,求值器,逐点操作基元装配,象素操作,光栅化,基片操作,帧缓存,纹理存储器,计算机图形学,3.5 OpenGL图形操作步骤,根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述把景物模型放在三维空间中合适的位置,并且设置视点(Viewpoint)以观察所感兴趣的景观。

8、计算模型中所有物体的色彩,这些色彩将根据应用要求来确定,同时确定光照条件、纹理贴图方式等。把景物模型的数学描述及色彩信息转换至计算机屏幕上的象素中,这个过程也就是光栅化(Rasterization)并行的其他一些操作,如自动消隐处理等。,计算机图形学,3.6 OpenGL的组成,OpenGL核心库OpenGL实用程序库OpenGL系统扩展库OpenGL编程辅助库OpenGL实用程序工具库,计算机图形学,3.7 OpenGL数据类型,为了更容易将OpenGL代码从一个平台移植到另一个平台,OpenGL定义了自己的数据类型,这些数据类型被映射为常规的C数据类型,也可以直接使用C语言数据类型,但不同

9、编译器环境对此有影响OpenGL定义的数据类型,将代码与这些类型变更相隔离。,计算机图形学,3.8 OpenGL函数命名约定,OpenGL的函数采取以下格式glColor3f(),库前缀,根命令,参数个数,参数类型,计算机图形学,3.9 OpenGL程序,最短的OpenGL程序,计算机图形学,最短的OpenGL程序,/Simple.c/The simplest OpenGL program with GLUT/#include#include/Called to draw scene/void RenderScene(void)/Clear the window with current cl

10、earing color/glClear(GL_COLOR_BUFFER_BIT);/Flush drawing commands/glFlush();,void SetupRC(void)glClearColor(0.0f,0.0f,1.0f,1.0f);/Main program entry point/void main(void)glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutCreateWindow(Simple);glutDisplayFunc(RenderScene);SetupRC();glutMainLoop();,计算机图形学,程

11、序演示,,计算机图形学,头文件,#include#include 定义了程序所用的函数原型windows.h,包含大多数Win32函数原型glut.h还包含gl.h,glu.h头文件,定义了OpenGL和GLU的库函数,计算机图形学,主体,void main(void)C程序的入口点,用了控制台模式,没用WinMain,计算机图形学,1.显示模式glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);告诉GLUT库在创建窗口时候使用哪种类型的显示模式,这里标志它使用单缓冲窗口(GLUT_SINGLE)并使用RGB模式(GLUT_RGB),计算机图形学,2.创建Ope

12、nGL窗口glutCreateWindow(Simple);表示对GLUT库进行调用,在屏幕上实际创建窗口,并将标题设置为“Simple”glutCreateWindow的单个参数是窗口标题栏中的标题,计算机图形学,3.显示回调glutDisplayFunc(RenderScene);将先前定义的函数RenderScene设为显示回调函数,这意味着只要需要绘制窗口,GLUT就会调用这个指定的函数。,计算机图形学,4.设置上下文并执行SetupRC();这一行与GLUT和OpenGL都没有关系,这个函数的作用是进行OpenGL的初始化glutMainLoop();这个函数让GLUT框架开始运行。

13、在为屏幕显示和其他函数定义了回调之后,这个函数回所有特定于操作系统的消息、键击等,直到用户终止这个程序为止。,计算机图形学,OpenGL图形调用,SetRC函数只包含一个OpenGL的函数调用:glClearColor(0.0f,0.0f,1.0f,1.0f);原型为Void glClearColor(Glclampf red,Glclampf green,Glcampf blue,Glclampf alpha);,计算机图形学,1.实际清除glClear(GL_COLOR_BUFFER_BIT);glClear函数用来清楚特定的缓冲区或者缓冲区组合。缓冲区是图像信息的存储区刚只是把蓝色设置为

14、清除色,计算机图形学,2.刷新队列glFlush();让所有未执行的OpenGL命令都被执行,此时只有glClear未被执行在内部,OpenGL使用一条渲染流水线来处理命令,以提高效能glFLush函数只是告诉OpenGL,它应该处理到目前为止收到的绘图命令,而不要再等待更多的绘图命令。,计算机图形学,Turbo C图形函数,图形模式的初始化,计算机图形学,#includeint main()int gdriver=DETECT,gmode;initgraph(,计算机图形学,概念与术语,OpenGL的特点OpenGL的工作结构OpenGL的功能OpenGL的工作流程OpenGL的图形操作步骤OpenGL的组成OpenGL的数据类型OpenGL程序,计算机图形学,作业,P42,1,2,3,4,5,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号