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介绍的更多相关文章

  1. OpenGL教程(0)——介绍

    OpenGL介绍 OpenGL,全称Open Graphics Library,是一个用C语言写的图形API.通俗地说,OpenGL用来绘制2D/3D图形.目前OpenGL的运用十分广泛,有许多用Op ...

  2. Cocos2d-x课程大纲/学习路线

    Cocos2d-x课程大纲/学习路线 这是什么? 这个一个Cocos2d-x技术路线的课程大纲/学习大纲. 你能用它做什么? 如果你是找工作的人, 利用本大纲, 你可以学习Cocos2d-x, 做一个 ...

  3. OpenGl学习笔记3之模型变换、视图变换、投影变换、视口变换介绍

    模型变换.视图变换.投影变换.视口变换介绍 opengl中存在四种变换,分别是模型变换,视图变换,投影变换,视口变换.这四种变换是图形渲染的基本操作,实质上这四种变换都是由矩阵乘法表示(这些操作都是由 ...

  4. 【转】OpenGL相关函数库介绍

    原文:http://blog.chinaunix.net/uid-20638550-id-1909182.html OpenGL 函数库相关的API有核心库(gl).实用库(glu).辅助库(aux) ...

  5. EGL接口介绍-----Android OpenGL ES底层开发

    引自:http://www.cnitblog.com/zouzheng/archive/2011/05/30/74326.html EGL 是 OpenGL ES 和底层 Native 平台视窗系统之 ...

  6. Android OpenGL ES 开发(一): OpenGL ES 介绍

    简介OpenGL ES 谈到OpenGL ES,首先我们应该先去了解一下Android的基本架构,基本架构下图: 在这里我们可以找到Libraries里面有我们目前要接触的库,即OpenGL ES. ...

  7. 现代OpenGL渲染管线介绍

    原文摘选自 现代OpenGL渲染管线介绍 此文对最新的OpenGL做一个简单的介绍,如有理解错误,敬请指正.英文原文: https://glumpy.github.io/modern-gl.html ...

  8. C#应用视频教程2.4 OPENGL虚拟仿真介绍

    这一部分我们首先实现视图控制(包括了平移/旋转/缩放),前面我们已经讲过,通过lookat一个函数,或者通过translate+rotate两个函数,都能实现视图的控制(两个函数的方式比较简单,但是通 ...

  9. C#应用视频教程2.3 OPENGL虚拟仿真介绍

    本节最重要的一个内容,就是让视野可以平移+旋转+缩放(就像打CS游戏一样以第一人称视角去观察物体,如果可能的话W,S,A,D四个按键控制人物移动,还有鼠标控制视角),本节最重要的一个概念就是设置观察视 ...

随机推荐

  1. 通达OA 在工作流中直接查询表单内容的开发尝试(图文)

    一个朋友提出要在工作里直接查询表单内容的需求,原来他们把工作流当做业务系统来用.也算把工作流用到极致了.为了实现像软件里直接的查询功能,他想在办理工作流的时候直接能查询到表单里面的内容. 通过研究通达 ...

  2. cocos2d-x开发记录:二,基本概念(骨骼动画)

    九,骨骼动画 1.骨骼动画vs Sprite sheets 你能使用sprite sheets 创建动画,它很快又容易.直到你意识到你的游戏需要大量的动画并且内存消耗越来越高,并且需要时间载入全部数据 ...

  3. 【Android】3.17 示例17--周边雷达功能

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 周边雷达功能同步支持Android和iOS端.它本质是一个连接百度LBS开放平台前端SDK产品和后端 ...

  4. eclipse中的项目受svn管理

    1.我们在启动Eclipse的时候都会有例如以下图提示: 假设我们直接这样输入目录的名字,这个文件会在eclipse安装目录的同一级自己主动生成这样一个名字叫做njgzw的目录.接下来我们每次启动都用 ...

  5. android 开发 ------- 接口文档 规范

    1 接口书写的格式: 1   用例图 2   流程图 3   详细的接口: 3.1请求的方式: 包含:   server地址 le.gxjinan.com/open/user.php?ac=login ...

  6. timeout的作用

    废话: 刚才刚才看视屏有一点没看懂,timeout的作用. 得出的结果: setTimeout(‘test()’,1000); 第一个参数要调用的函数名,第二个参数是延时的时间.时间到达以后调用tes ...

  7. ServiceMetadataBehavior 的 HttpsGetEnabled 属性设置为 True,而 HttpsGetUrl 属性是相对地址,但没有 https 基址

    WCF 发布,本机正常,服务器报错,信息如下: ServiceMetadataBehavior 的 HttpsGetEnabled 属性设置为 True,而 HttpsGetUrl 属性是相对地址,但 ...

  8. PS_图象调整_太暗/过亮_曝光不足/过度

    对于曝光不足,图像太暗. 1.调整[色阶] 图象>调整>色阶   clrl+L 然后拖动"黑","灰","白"三个滑块. 2.使 ...

  9. Unity Vector3.Slerp使用范例

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestSler ...

  10. 关于shm_open和shm_unlink的使用问题(要连接库的原因)

    关于shm_open和shm_unlink的使用问题 referencefunctionobjectsystembehaviorlinux C programming in the UNIX envi ...