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. Nginx+mysql+php(待补全)

    先安装 Nginx 通过源码安装可以指定目录(/usr/local/Nginx/) yum或源码安装Mysql yum或源码安装php(记得命令一定要全,别忘了安装php-fpm) 待补全

  2. 在ModelSim中添加Xilinx仿真库

    在ModelSim中添加Xilinx仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\Mode ...

  3. 【Android】19.2 ShareActionProvider类—帮你把信息分享出去

    分类:C#.Android.VS2015: 创建日期:2016-03-06 一.简介 共享操作提供程序类(ShareActionProvider)简化了你希望与其他人(或者其他应用程序)共享或分享出来 ...

  4. mysql 的S 锁和X锁的区别

    共享锁和排它锁 MySQL的锁系统:shared lock和exclusive lock(共享锁和排他锁,也叫读锁和写锁,即read lock和write lock) 读锁是共享的,或者说是相互不阻塞 ...

  5. Eclipse build error 解决方法The library '*.jar' contains native libraries that will not run on the dev

    [2013-08-29 16:56:58 - jarsotest] The library 'wnp.jar' contains native libraries that will not run ...

  6. shell echo -n md5sum使用方法

    #!/bin/bash MYSQL='mysql -u*** -p*** -hws5 account' tmp="tmp" resultsource="resultsou ...

  7. 由sqlite在手机上的存储位置,引发的onCreate在哪里执行的小结

    我们都知道,android为了操作数据库,一般是继承SQLiteOpenHelper类,并实现他的三个函数. 如下所示: package jz.his.db; import android.conte ...

  8. sql数据类型总结

    一.数字数据类型 bigint int smallint tinyint decimal numeric money smallmoney float real Bit 二.字符数据类型 非unico ...

  9. 【C#/WPF】.Net生成二维码QRCode的工具

    先马 http://qrcodenet.codeplex.com/ 使用该工具WPF生成二维码的简单例子: 前台XAML准备一个Image控件显示二维码. string qrcodeStr = &qu ...

  10. 【C#/WPF】键盘事件

    需求:按下回车键,触发事件. 搜MSDN时,看到的键盘事件是System.Windows.Forms里的,在WPF中没法用: https://msdn.microsoft.com/zh-tw/libr ...