计算机图形学中OpenGL和DirectX
引言
接触计算机图形学,一定听说过两大编程接口:OpenGL和DirectX,两者之间不断竞争,也不断促进着各自的发展。API大战真的很有意思,一起来看看这两大BOSS究竟是什么,实力如何?
OpenGL是什么
OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图象(二维的亦可),是一个功能强大,调用方便的底层图形库。
OpenGL是个与硬件无关的软件接口,可以在不同的平台如 Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于 OpenGL是图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD[2] 、3DS/3DSMAX[3] 等3D图形设计软件制作的DXF和3DS模型文件转换成OpenGL的顶点数组。市场调研机构Jon Peddie Research预测,OpenGL 3.1规范图形硬件的安装规模将超过1亿。AMD、NVIDIA、S3 Graphics的显卡驱动目前都已经支持OpenGL 3.0。
OpenGL-ES是什么
OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。OpenGL- ES 是免授权费的,跨平台的,功能完善的2D和3D图形应用程序接口API,主要针对多种嵌入式系统专门设计 -
包括控制台、移动电话、手持设备、家电设备和汽车。它由精心定义的桌面OpenGL子集组成,创造了软件与图形加速间灵活强大的底层交互接口,就是目前手 机游戏主要使用的图形底层支持。
DirectX是什么
1995年至1996年,微软实行了一项新计划,以支持在 Windows95上运行游戏,目标是把市场扩展到被任天堂和世嘉控制的游戏领域。然而,微软不想用已经在NT上提供的OpenGL技术。微软收购了 Rendermorphics,Ltd.并得到他的被称作RealityLab的3D API。经重新整理,微软发布了新的3D API——Direct3D。微软,推行Direct3D,冻结OpenGL!进行API之战。(微软就是这么吊~)这就是DirectX由来历史!
DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX ONE电子游戏开发,并且只能支持这些平台。
DirectX加强3D图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低了用户安装及设置硬件的复杂度。从字面意义上说,Direct就是直接的意思,而后边的X则代表了很多的意思,从这一点上可以看出DirectX的出现就是为了为众多软件提供直接服务的。
DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。已然成为了一个应用平台,目前游戏开发,DirectX所占市场要大一些。
OpenGL和DirectX的工作
两者都是图像应用编程接口,这些接口用于渲染二维或者三维图形。可以说这些接口架起了上层应用程序和底层GPU的桥梁。一个应用程序向这些接口发送渲染命令,而这些接口会依次向显卡驱动发送渲染命令,这些显卡驱动是真正知道如何和GPU通信的角色,正是它们把OpenGL或者Directx的函数调用翻译成了GPU能够听懂的语言,同时它们也负责把纹理等数据转换成GPU所支持的格式。
OpenGL和DirectX的区别
1 在技术方面
OpenGL具有较强的可移植性,而DirectX只能用于 windows操作系统,它是基于windows操作系统平台的应用程序接口。OpenGL只是图形函数库,是专业的3D程序接口,OpenGL被设计为只有输出,因此只提供渲染功能。核心API没有窗口系统,音频,打印等其他输入设备的概念。也正是因为这样的设计,允许它渲染的代码完全独立于运行的操作系统,允许跨平台开发。
DirectX是微软公司开发的用途广泛的API,它提供了一整套多媒体接口方案,尤其在3D图形方面的表现突出。
在硬件通信方面,DirectX是程序能够轻松确定计算机的硬件性能,然后设置与之匹配的程序参数。该程序使得多媒体软件程序能够在基于windows的具有DirectX兼容硬件与驱动程序的计算机上运行,同时确保多媒体程序能够充分急用高性能硬件。
OpenGL是一个与硬件无关的软件接口,可在任何平台上运行,与DirectX能设置与硬件匹配的程序参数相比,要逊色一些。目前,硬件开发商正在加强对它的支持。
2 在应用方面
在专业高端绘图领域,OpenGL仍然是不能被取代的主角, 在包含CAD,内容创作,能源,娱乐,游戏开发,及虚拟现实等行业领域中,OpenGL得到广泛的应用。
DirectX适合于多媒体,娱乐,及时3D动画 等广泛和实用的3D图形计算,在基于windows平台上的游戏开发中,它占领了大部分的市场。
参考
https://blog.csdn.net/yupu56/article/details/81355090
《Unity Shader 入门精要》
计算机图形学中OpenGL和DirectX相关推荐
- 计算机图形学中需要掌握的数学基础知识有哪些?
计算机图形学中使用了大量数学知识,尤其是矩阵和线性代数.虽然我们倾向于认为3D图形编程是紧跟最新技术的领域之一(它在很多方面确实是),但它用到的很多技术实际上可以追溯到上百年前,其中一些甚至是由文艺复 ...
- 平移计算机图形学代码注释,求代码注释:计算机图形学的OpenGL画四面体。高手来吧。争取每句都注释下。谢谢...
求代码注释:计算机图形学的OpenGL画四面体.高手来吧.争取每句都注释下.谢谢 答案:3 信息版本:手机版 解决时间 2018-12-20 05:00 已解决 2018-12-20 01:58 求 ...
- 计算机图形学及OpenGL简介摘记
计算机图形学(Computer Graphics)是研究怎样用计算机表示.生成.处理和显示图形的一门学科.图形的具体应用范围很广,但是按基本的处理技术划分只有两类.一类是线条,如工程图.地图.曲线图表 ...
- 计算机图形学中向量点乘和叉乘的用途_图形学笔记(一):基础知识
从这便文章开始整理学习到的计算机图像学相关知识,原则是只写我没在网上找到清楚解释的内容,如果有很好的文章介绍相关内容,我会直接把链接贴上. 首先弄清 Computer Graphics和 Comput ...
- c语言 连通域算法 递归,VC++ 6.0编写计算机图形学中的种子填充算法,想用递归的八向连通域,求助!...
VC++ 6.0编写计算机图形学中的种子填充算法,想用递归的八向连通域,求助!0 填充函数代码如下: void CComputerGraphicsView::PolygonFill2()//区域填充函 ...
- 数学系列:数学在计算机图形学中的应用
宇宙的琴弦 博客园 首页 新随笔 联系 订阅 管理 随笔 - 60 文章 - 0 评论 - 0 数学系列:数学在计算机图形学中的应用 Copyright © 1900-2016, NORYES ...
- 数学在计算机图形学中的应用
数学在计算机图形学中的应用 刘利刚 中国科技大学 "学习计算机图形学需要多少的数学?"这是初学者最经常问的问题. 狭义的计算机图形学指的是传统的三维建模,绘制,动画等,而广义的计算 ...
- 计算机图形学中的曲线问题
文章目录 免责 前言 拉格朗日插值多项式 第一步:得到一个基函数 第二步:得到所有基函数 第三步:对所有基函数进行线性组合 举例验证 拉格朗日插值曲线绘制实践 三次埃尔米特插值多项式 第一步:得到第一 ...
- 《 线性代数及其应用 (原书第4版)》—— 2.7 计算机图形学中的应用
本节书摘来自华章出版社< 线性代数及其应用 (原书第4版)>一书中的第2章,第2.7节,作者:(美)戴维C. 雷(David C. Lay)马里兰大学帕克学院 著刘深泉 张万芹 陈玉珍 包 ...
最新文章
- Spring基础专题——第二章(注入Injection)
- json schema多种形式_什么是JSON Schema?
- java基础知识回顾之javaIO类总结
- java 制作 winrar,Java使用winrar解压缩
- 在SQLSERVER企业管理器中如何创建触发器
- 推荐一款高引超6000次的全基因组/全外显子组变异注释工具
- 试驾小程序_Linux如何成为Linux:试驾1993-2003发行版
- 空间旋转矢量的求法(理解)
- PLSQL下载及安装
- 业务流程图绘制方法经验谈(上篇)
- HTC Vive Unity 教程
- 正弦余弦优化算法[记录]
- STM32中的RCC是什么意思
- 聊聊程序员的核心能力
- Java名字的由来:Java和印尼爪哇岛有什么关系?
- 快速排序----科大讯飞2021 java开发岗
- sql null与空
- Quest商店:利用A/B测试,竟可将VR游戏转化率提升26.5%
- 主板上的南桥和北桥是什么意思?
- 20年来,有一群用这个引擎探索“格斗”的极限