OpenGL介绍
OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便、效率高。
OpenGL特点:
1、OpenGL是目前用于开发可移植的、可交互的2D和3D图形应用程序的首选环境,也是目前应用最广泛的计算机图形标准。OpenGL是SGI公司开发的一套的计算机图形处理系统,是图形硬件的软件接口,GL代表图形库(Graphics Library)。OpenGL具有可移植性,任何一个OpenGL应用程序无须考虑其运行环境所在平台与操作系统,在任何一个遵循OpenGL标准的环境下都会产生相同的可视效果。
2、OpenGL不是一种编程语言,而是一种API(Application Programming Interface,应用程序编程接口)。当我们说某个程序是基于OpenGL的或者说它是个OpenGL程序是,意思是说它是用某种编程语言如C或C++编写的,其中调用了一个或多个OpenGL库函数。作为一种API,OpenGL遵循C语言的调用约定。
3、OpenGL主要包括三个函数库,它们是核心库、实用函数库和编程辅助库。核心库中包含了OpenGL最基本的命令函数。核心库提供了一百多个函数,这些函数都以”gl”为前缀,用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等所有的二维和三维图形操作。
4、实用函数库是比核心库更高一层的函数库,这些函数都以”glu”为前缀。由于OpenGL是一个图形标准,是独立于任何窗口系统或操作系统的,在OpenGL中没有提供窗口管理和消息事件响应的函数,也没有鼠标和键盘读取事件的功能,所以在编程辅助库提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。这类函数以”aux”作为前缀。值得一提的是,目前AUX编程辅助库已经很大程度上被GLUT库取代了。
5、GLUT代表OpenGL应用工具包(OpenGL Utility Toolkit),是一个与窗口系统无关的工具包。它作为AUX库的功能更强的替代品,用于隐藏不同窗口系统API的复杂性。GLUT的子程序的前缀使用”glut”。
6、Kilgard最早在X windows上应用这个库,后来Nate Robins把它扩展到微软的Windows窗口系统。
OpenGL功能:
OpenGL 能够对整个三维模型进行渲染着色,从而绘制出与客观世界十分类似的三维景象。另外 OpenGL 还可以进行三维交互、动作模拟等。
1.模型绘制 OpenGL 能够绘制点、线、三角形、多边形、曲线和曲面。应用这些基本的形体,可以构造出几乎所有的三维模型。OpenGL 通常用模型的多边形的顶点来描述三维模型。
2.模型观察 在建立了三维景物模型后,就需要用 OpenGL 描述如何观察所建立的三维模型。观察三维模型是通过一系列的坐标变换进行的。模型的坐标变换使观察者能够在视点位置观察于视点相适应的三维模型景观。在整个三维模型的观察过程中,投影变换的类型决定观察三维模型的观察方式,不同的投影变换得到的三维模型的景象也是不同的。最后的视窗变换则对模型的景象进行裁剪缩放,即决定整个三维模型在屏幕上的图像。
3.颜色模型的指定 OpenGL 应用了一些专门的函数来指定三维模型的颜色。程序员可以选择两个颜色模型,即 RGBA 模式和颜色表模式。在 RGBA模式中,颜色直接由 RGB 值来指定;在颜色表模式中,颜色值则由颜色表中的一个颜色索引值来指定。程序员还可以选择平面着色和光滑着色两种着色方式对整个三维景观进行着色。
4.光照模型 用 OpenGL 绘制的三维模型必须加上光照才能更加的与客观物体相似。OpenGL 提供四种光(环境光、散射光、镜面反射光和发射光)的渲染方法。OpenGL 可以创建点光源、聚光灯和面光源,通过指定光源的位置和方向,以及光源的颜色和衰减属性,来产生光照。OpenGL 通过指定材质属性,来进行光照模型计算,指定物体的颜色。
5.图像效果增强功能 OpenGL 提供了一系列的增强三维景观的图像效果的函数,这些函数通过反走样,混合和雾化来增强图像的效果。反走样用于改善图像中线段图形的锯齿想像而使其更平滑,混合用于处理模型的半透明效果,雾化使得景象从视点到远处逐渐退色,形成雾的效果。这些都使场景更加的真实。
6.位图和图像处理 OpenGL 提供了专门对位图和图像进行操作的函数。包括位图和图像的绘制,图像像素数据的读取、写入和复制(包括把处
理器内存中的像素数据写入到帧缓存中,以及将帧缓存中的像素数据写入到处理器内存中,在不同的缓存之间复制以及在同一个缓存内部复制),图像数据格式的转换匹配。OpenGL 提供的图像处理子集还可以根据颜色表来代替像素值,用卷积来处理图像,使用颜色矩阵变换颜色空间,以及统计图像数据。
7.纹理映射 三维景观因缺少景物的具体细节而显得不够真实,为了更加逼真地表现三维景物,OpenGL 提供了纹理映射功能,包括一维、二维和三维纹理映射,mipmap 和多重纹理操作,以及复杂的环境映射。还提供了驻留纹理工作集来加速和优化纹理的操作。从而可以绘制出更逼真的三维景观。
8.实时动画 为了获得平滑的动画效果,OpenGL 提供了双缓存技术。它先在内存的一个缓存中生成下一个图像,然后把已经生成的图像从内存拷贝到屏幕上。
9.交互技术 目前许多图形应用需要人机交互,OpenGL 提供了方便的三维图形人机交互接口,用户可以选择和修改三维场景中的物体。OpenGL提供选择和反馈机制来实现这些。
OpenGL 被设计成独立于硬件、独立于窗口系统,在各种操作系统上都可以运行,并能在网络环境下以客户机/服务器模式工作,是图形处理、科学计算等高端应用领域的标准图形库。
OpenGL介绍的更多相关文章
- OpenGL教程(0)——介绍
OpenGL介绍 OpenGL,全称Open Graphics Library,是一个用C语言写的图形API.通俗地说,OpenGL用来绘制2D/3D图形.目前OpenGL的运用十分广泛,有许多用Op ...
- Cocos2d-x课程大纲/学习路线
Cocos2d-x课程大纲/学习路线 这是什么? 这个一个Cocos2d-x技术路线的课程大纲/学习大纲. 你能用它做什么? 如果你是找工作的人, 利用本大纲, 你可以学习Cocos2d-x, 做一个 ...
- OpenGl学习笔记3之模型变换、视图变换、投影变换、视口变换介绍
模型变换.视图变换.投影变换.视口变换介绍 opengl中存在四种变换,分别是模型变换,视图变换,投影变换,视口变换.这四种变换是图形渲染的基本操作,实质上这四种变换都是由矩阵乘法表示(这些操作都是由 ...
- 【转】OpenGL相关函数库介绍
原文:http://blog.chinaunix.net/uid-20638550-id-1909182.html OpenGL 函数库相关的API有核心库(gl).实用库(glu).辅助库(aux) ...
- EGL接口介绍-----Android OpenGL ES底层开发
引自:http://www.cnitblog.com/zouzheng/archive/2011/05/30/74326.html EGL 是 OpenGL ES 和底层 Native 平台视窗系统之 ...
- Android OpenGL ES 开发(一): OpenGL ES 介绍
简介OpenGL ES 谈到OpenGL ES,首先我们应该先去了解一下Android的基本架构,基本架构下图: 在这里我们可以找到Libraries里面有我们目前要接触的库,即OpenGL ES. ...
- 现代OpenGL渲染管线介绍
原文摘选自 现代OpenGL渲染管线介绍 此文对最新的OpenGL做一个简单的介绍,如有理解错误,敬请指正.英文原文: https://glumpy.github.io/modern-gl.html ...
- C#应用视频教程2.4 OPENGL虚拟仿真介绍
这一部分我们首先实现视图控制(包括了平移/旋转/缩放),前面我们已经讲过,通过lookat一个函数,或者通过translate+rotate两个函数,都能实现视图的控制(两个函数的方式比较简单,但是通 ...
- C#应用视频教程2.3 OPENGL虚拟仿真介绍
本节最重要的一个内容,就是让视野可以平移+旋转+缩放(就像打CS游戏一样以第一人称视角去观察物体,如果可能的话W,S,A,D四个按键控制人物移动,还有鼠标控制视角),本节最重要的一个概念就是设置观察视 ...
随机推荐
- 利用PHPExcel实现数据保存到excel文件
include(dirname(__FILE__) .'/phpexcel-1.7.7/Classes/PHPExcel.php'); include(dirname(__FILE__) .'/php ...
- java servlet中执行linux命令
public HttpServletResponse execCmd(String cmd, HttpServletRequest request, HttpServletResponse respo ...
- java Web服务实现方案(REST+SOAP+XML-RPC)简述及比较
目前知道的三种主流的Web服务实现方案为:REST:表象化状态转变 (软件架构风格)SOAP:简单对象访问协议 XML-RPC:远程过程调用协议 下面分别作简单介绍: REST:表征状态转移(Repr ...
- Sublime Text 3 快捷鍵
/*On OS X, basic text manipulations (left, right, command+left, etc) make use of the system key bind ...
- python @property使用详解
1.@property,@xx.setter的作用把方法变成属性@property获取属性@xx.setter设置属性 2.使用示例 #@property使用 class Lang(object): ...
- Thread中的join使用
线程中的join方法就是用来等待一个线程完成它自己的全部任务之后才开启下一个进程,join(时间),则表示线程要执行完时间范围才开始下一个工作任务的执行!比如定义join(1500)必须在执行15s后 ...
- js解析url参数如http://www.taobao.com/index.php?key0=21&key1=你哈&(获取key0和key1的值)
function parseQueryString(url) { var pos; var obj = {}; if ((pos = url.indexOf("?")) != -1 ...
- vim添加复制(crtl+c),粘贴(ctrl+v)ctrl+A 等快捷键
1 在 /usr/share/vim/vimrc文件中添加 source $VIMRUNTIME/mswin.vim 2 mswin.vim位置在 /usr/share/vim/vim72/ ...
- 一款仿ios7的switches开关按钮
今天给大家介绍一款仿ios7的switches开关按钮.这款按钮也是纯css实现的.无需引js代码.在实现中给出了两种颜色,三种不同大小的demo.一起看下效果图: 在线预览 源码下载 实现的代码 ...
- timeout的作用
废话: 刚才刚才看视屏有一点没看懂,timeout的作用. 得出的结果: setTimeout(‘test()’,1000); 第一个参数要调用的函数名,第二个参数是延时的时间.时间到达以后调用tes ...