前言

学习3d游戏开发,避免不了和图形学打交道,在电脑上安装一些大型游戏时,也经常会报缺少一些东西,而导致游戏无法运行,其中出现的单词就有DirectX,但他是什么呢?OpenGL又是什么呢?
unity3d游戏开发中逼真的游戏场景和特效又是和谁打交道呢?让我们开始了解OpenGL和DirectX吧!

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的区别

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平台上的游戏开发中,它占领了大部分的市场。

Unity Shader编程是什么

回到unity引擎上,着色器(shader)编程是什么呢?我们看到个人电脑上图形处理器的性能日益增强。而且它使得游戏执行速度运行得更加的快,但其并不能证明图形处理器就拥有高质量的图像表现力。这就是迄今PC图形处理器发展的主要局限性 — 固定函数。固定函数意味着芯片设计者需要把特定图形算法的硬件代码加入到图形芯片中,并且它也限制了游戏与应用程序开发者只能在这些特定的固定算法里徘徊。
3D应用编程接口(OpenGL及DirectX)一直沿着图形硬件在不断地发展进步。DirectX Graphics中最重要的一个特征就是增加了可编程管道,提供汇编语言接口处理变形与光照的硬件(顶点着色)及象素管道(象素着色)。可编程管道为开发者们提供了极大的自主权,以用其去实现以前从未见过的实时应用程序。
直白一点的讲,着色器是一段运行在GPU上的程序,可以取代渲染的固定功能流水线中部分功能。我们利用可编程管道渲染,达到比用固定管道渲染更丰富的画面显示效果。

OpenGL和DirectX是什么?相关推荐

  1. OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式

    (原文地址:http://alvincc-tech.blogspot.com/2010/10/opengl-glsl-directx-hlsl.html) OpenGL, GLSL, DirectX, ...

  2. (转)OpenGL与DirectX 比较

    Linux易用性差的一个重要表现是对游戏的支持性差.当然,linux也有为数众多的游戏,如纸牌,企鹅滑雪,泡泡龙,这些小游戏的可玩性绝对的windows的纸牌,扫雷之类高. 不过,我们所说的游戏是指& ...

  3. [转] Carmack 谈 d3d 与 ogl,定位专业应用的OpenGL,专注娱乐应用的DirectX,未来:OpenGL、DirectX并行发展

    http://blog.csdn.net/xieyuquan/archive/2006/10/05/1321801.aspx 我找不到一个理由不让这篇文章多一份Copy 原地址:http://bbs. ...

  4. [转] Carmack 谈 d3d 与 ogl, 定位专业应用的OpenGL, 专注娱乐应用的DirectX, 未来:OpenGL、DirectX并行发展...

    我找不到一个理由不让这篇文章多一份Copy 原地址:http://bbs.emu-zone.org/forums/archive/index.php/t-70.html 在经过这段时间的积累和沉淀 再 ...

  5. OpenGL与DirectX 比较

    Linux易用性差的一个重要表现是对游戏的支持性差.当然,linux也有为数众多的游戏,如纸牌,企鹅滑雪,泡泡龙,这些小游戏的可玩性绝对的windows的纸牌,扫雷之类高. 不过,我们所说的游戏是指& ...

  6. OpenCL、OpenGL和DirectX三者的区别

    什么是OpenCL? OpenCL全称Open Computing Language,是第一个面向异构系统通用目的并行编程的开放式.免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器 ...

  7. 计算机图形学中OpenGL和DirectX

    引言 接触计算机图形学,一定听说过两大编程接口:OpenGL和DirectX,两者之间不断竞争,也不断促进着各自的发展.API大战真的很有意思,一起来看看这两大BOSS究竟是什么,实力如何? Open ...

  8. 各类三维引擎综合概述(OpenGL、DirectX、WebGL、UE4、U3D、ACIS、ParaSolid)

    关于OpenGL.DirectX.OpenCV OpenCV OpenCV是 Open Source Computer Vision Library 主要是提供图像处理和视频处理的基础算法库,还涉及一 ...

  9. GDI与OpenGL与DirectX之间的区别

    图形编程的几种技术对比: GDI,图形设备接口,MS开发的通用的windows系统图形编程接口,功能强涉及面广,一般的编程都用它.但是用来做多媒体开发就差强人意了 OPENGL是SGI开发的一套三维图 ...

  10. opengl与Directx的区别

    From: http://blog.163.com/xtdx888888@126/blog/static/2955727520083661133565/ OpenGL 只是图形函数库. DirectX ...

最新文章

  1. redis java切片_jedis 单点配置
  2. 专题 19 Makefile的使用
  3. 【一天一个shell命令】【cut】
  4. html文档php 取mac地址_cpu序列号_硬盘序列号,用vbs脚本获取网卡MAC,CPUID,硬盘序列号的实现代码...
  5. 如何关闭rsyslog服务?_Linux日志服务器设置过程
  6. Flutter学习之纵向布局
  7. 模拟登陆教务处获取成绩
  8. Peter Norvig:学习在于挑战和重复
  9. 陆军装备环境可靠性试验|GJB150A-2009
  10. 大学c语言题库 答案,天津城建大学C语言题库附答案.doc
  11. 职业投资策略(转贴)
  12. Excel -- 行列数据移动(移动复制)
  13. java全局搜素快捷键_eclipse全局搜索快捷键是什么
  14. 最好的60个国外壁纸网站
  15. 平板如何下载鸿蒙系统,鸿蒙系统2.0
  16. BMC-web的介绍(一)
  17. Tarjan算法超详细讲解(割点割边强连通)
  18. 微信公众号分享jssdk.php,微信公众号JSSDK
  19. 尺寸压缩与质量压缩的文件大小及效果对比,webp格式
  20. Python学习笔记---------廖雪峰(基础和函数)

热门文章

  1. 搜索结果排列html模板,搜索结果页优化-城市模板
  2. ptb同一屏呈现两张图片matlab,PTB诊断心电数据库中的原始ECG信号的特征提取
  3. 青岛大学计算机专业春考,青岛大学春季高考分数线2020
  4. linux最新flash+player,Linux版Flash Player正式回归
  5. Phalcon 上传文件
  6. 输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)
  7. Data requirement
  8. Git Git用户ssh公钥管理
  9. 产品线 产品宽度 产品的深度 产品的相关度(理解工厂模式)
  10. 你还不知道钉钉服务端API全局错误码吗?