您的位置:首页 > 理论基础

[OpenGL] 初识OpenGL,计算机图形学

2017-11-20 22:09 253 查看

计算机图形学

计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。

这套软-硬件关系框架50年前就在用,现在依旧适用:



那到底什么是计算机图形学?概括起来就是:模型 + 渲染 + 动画 + 相互作用

主要使用的就是OpenGL和C语言/C++语言。

OpenGL 简介

Open Graphics Library(OpenGL)是用于渲染2D和3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。API通常用于与图形处理单元(GPU)交互,以实现硬件加速渲染。

Silicon Graphics Inc.(SGI)于1991年开始开发OpenGL,并于1992年1月发布。广泛应用于计算机辅助设计(CAD),虚拟现实,科学可视化,信息可视化,飞行模拟和电子游戏。 自2006年以来,OpenGL已经由非营利技术协会Khronos Group管理。

最新的发行版本是OpenGL 4.6,发布于2017年7月31日。OpenGL 官网

不要与OpenCL混淆了,Open Computing Language。

听过OpenGL的也许还听过这几个词:Vulkan、OpenGL | ES、WebGL。

Vulkan:Vulkan是一款低开销,跨平台的3D绘图应用程序接口(API)。最早由非营利组织Khronos Group在2015年游戏开发者大会(GDC)上发表。Vulkan针对所有平台上的高性能实时3D图形应用程序,例如视频游戏和交互式媒体。Vulkan也具有渲染2D图形应用程序的能力,但它通常适用于3D。

OpenGL | ES:OpenGL for Embedded Systems (OpenGL ES 或 GLES)是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos Group定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。

WebGL:Web Graphics Library是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。

OpenGL 图形管道



OpenGL 函数库

说到OpenGL就要提一下Direct3D,Direct3D是微软专用于Windows平台的专利API,Direct3D是一个3D硬件接口,由应用程序管理硬件,从而开发人员可以针对应用以更有效的方式来灵活分配资源。

OpenGL函数库相关的API有核心库(OpenGL Core Library,GL)、实用库(OpenGL Utility Library,GLU,对GL的部分封装)、实用工具库(OpenGL Utility Toolkit Library,GLUT)、辅助库(AUX)、窗口库(GLX,AGL,WGL,分别对应不同的窗口系统)和扩展函数库等。

GLUT:这部分函数以
glut
开头,主要包括窗口操作函数、窗口初始化、窗口大小、窗口位置等函数;回调函数:响应刷新消息、键盘消息、鼠标消息、定时器函数等;创建复杂的三维物体;菜单函数;程序运行函数。

GLEW

GLEW是一个基于OpenGL图形接口的跨平台的C++扩展库。GLEW能自动识别当前平台所支持的全部OpenGL高级扩展函数。只要包含
glew.h
头文件,就能使用gl,glu,glext,wgl,glx的全部函数。GLEW支持目前流行的各种操作系统。

GLFW

GLFW 官网

GLFW是一个轻量级的、开源的、跨平台的OpenGL应用框架。支持OpenGL、OpenGL ES及Vulkan,用来管理窗口,读取输入,处理事件等。因为OpenGL没有窗口管理的功能,所以很多热心的人写了工具来支持这些功能,比如早期的GLUT,现在的FREEGLUT等。那么GLFW有何优势呢?GLUT太老了,最后一个版本还是90年代的。FREEGLUT完全兼容GLUT,算是GLUT的代替品,功能齐全,但是bug太多。稳定性也不好,GLFW应运而生。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: