引言

接触计算机图形学,一定听说过两大编程接口: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相关推荐

  1. 计算机图形学中需要掌握的数学基础知识有哪些?

    计算机图形学中使用了大量数学知识,尤其是矩阵和线性代数.虽然我们倾向于认为3D图形编程是紧跟最新技术的领域之一(它在很多方面确实是),但它用到的很多技术实际上可以追溯到上百年前,其中一些甚至是由文艺复 ...

  2. 平移计算机图形学代码注释,求代码注释:计算机图形学的OpenGL画四面体。高手来吧。争取每句都注释下。谢谢...

    求代码注释:计算机图形学的OpenGL画四面体.高手来吧.争取每句都注释下.谢谢 答案:3  信息版本:手机版 解决时间 2018-12-20 05:00 已解决 2018-12-20 01:58 求 ...

  3. 计算机图形学及OpenGL简介摘记

    计算机图形学(Computer Graphics)是研究怎样用计算机表示.生成.处理和显示图形的一门学科.图形的具体应用范围很广,但是按基本的处理技术划分只有两类.一类是线条,如工程图.地图.曲线图表 ...

  4. 计算机图形学中向量点乘和叉乘的用途_图形学笔记(一):基础知识

    从这便文章开始整理学习到的计算机图像学相关知识,原则是只写我没在网上找到清楚解释的内容,如果有很好的文章介绍相关内容,我会直接把链接贴上. 首先弄清 Computer Graphics和 Comput ...

  5. c语言 连通域算法 递归,VC++ 6.0编写计算机图形学中的种子填充算法,想用递归的八向连通域,求助!...

    VC++ 6.0编写计算机图形学中的种子填充算法,想用递归的八向连通域,求助!0 填充函数代码如下: void CComputerGraphicsView::PolygonFill2()//区域填充函 ...

  6. 数学系列:数学在计算机图形学中的应用

    宇宙的琴弦 博客园 首页 新随笔 联系 订阅 管理 随笔 - 60   文章 - 0   评论 - 0 数学系列:数学在计算机图形学中的应用 Copyright © 1900-2016, NORYES ...

  7. 数学在计算机图形学中的应用

    数学在计算机图形学中的应用 刘利刚 中国科技大学 "学习计算机图形学需要多少的数学?"这是初学者最经常问的问题. 狭义的计算机图形学指的是传统的三维建模,绘制,动画等,而广义的计算 ...

  8. 计算机图形学中的曲线问题

    文章目录 免责 前言 拉格朗日插值多项式 第一步:得到一个基函数 第二步:得到所有基函数 第三步:对所有基函数进行线性组合 举例验证 拉格朗日插值曲线绘制实践 三次埃尔米特插值多项式 第一步:得到第一 ...

  9. 《 线性代数及其应用 (原书第4版)》—— 2.7 计算机图形学中的应用

    本节书摘来自华章出版社< 线性代数及其应用 (原书第4版)>一书中的第2章,第2.7节,作者:(美)戴维C. 雷(David C. Lay)马里兰大学帕克学院 著刘深泉 张万芹 陈玉珍 包 ...

最新文章

  1. Spring基础专题——第二章(注入Injection)
  2. json schema多种形式_什么是JSON Schema?
  3. java基础知识回顾之javaIO类总结
  4. java 制作 winrar,Java使用winrar解压缩
  5. 在SQLSERVER企业管理器中如何创建触发器
  6. 推荐一款高引超6000次的全基因组/全外显子组变异注释工具
  7. 试驾小程序_Linux如何成为Linux:试驾1993-2003发行版
  8. 空间旋转矢量的求法(理解)
  9. PLSQL下载及安装
  10. 业务流程图绘制方法经验谈(上篇)
  11. HTC Vive Unity 教程
  12. 正弦余弦优化算法[记录]
  13. STM32中的RCC是什么意思
  14. 聊聊程序员的核心能力
  15. Java名字的由来:Java和印尼爪哇岛有什么关系?
  16. 快速排序----科大讯飞2021 java开发岗
  17. sql null与空
  18. Quest商店:利用A/B测试,竟可将VR游戏转化率提升26.5%
  19. 主板上的南桥和北桥是什么意思?
  20. 20年来,有一群用这个引擎探索“格斗”的极限

热门文章

  1. Android源码--不搭的跳舞机
  2. Java将多个文件打包成ZIP并下载
  3. 【学习经验分享NO.15】本科硕士学位论文和学术论文查重及降重方法
  4. 第五章 循环 程序设计练习
  5. 短视频平台-小说推文(Lofter)推广任务详情
  6. Abaqus模拟偏心受压钢管混凝土柱(浇筑混凝土之前钢管存在初应力和初变形)
  7. LG 5G手机V50 ThinQ成新亮点 引入掌静脉辨识G8 ThinQ
  8. [机器学习导论]—— 第四课——决策树
  9. 北京医保二次报销如何办理?怎么报?
  10. Android系统默认语言改为中文