提起图形处理和显卡相关的内容,尤其是玩电脑游戏的时候(通常是安装时)很多人是不是很容易就想起了一个熟悉的名词叫做Direct X,通常什么Direct 9.0c之类的东西都是打游戏必备的。那么大家知道DirectX是什么吗?另外你知道一个类似名词OpenGL是什么吗?本文将对他们进行简要的介绍和对比,希望对大家了解和显卡密切相关的Direct X和OpenGL。
Direct X是什么Direct X是Direct eXtension的简写,可以进一步简写成DX。为微软公司开发的多媒体编程接口,目前只支持Windows平台,虽然Linux等平台依靠wine等程序也能实现DirectX但是性能相当可怜。
Direct X发展到现在已经有11代产品了,目前最常用的有两个Direct X 11.1和Direct 9.0c。前者是Windows7/8的标准配置,后者是WindowsXP的标准。对于很多新游戏而言都以Direct X 11为接口。Direct X有很多API接口, 可以分为以下几个部分:
Direct Draw和Driect 3D为主的显示部分。其中Direct Draw是负责平面显示的,而Direct 3D是负责3D运算的。通常而言大型3D游戏运用的就是Direct 3D部分(当然,如果采用Direct X作渲染的话)。
以DirectSound为主的声音部分
以DirectInput为主的输入设备,键盘鼠标遥感等游戏控制设备的输入就在这里完成
以DirectPlay为主的网络波分,方便网络游戏等操作……
Direct X借助Windows的顺风车已经占领了相当大的 市场,但是仅仅支持Windows系统这个弊端就促使其他操作系统进行自己的多媒体编程计划,目前最强大的就是OpenGL。
OpenGL是什么OpenGL是由开源社区提供的免费开源的多媒体编程接口,全称是Open Graphics Library。OpenGL功能非常强大,但是使用起来也是相当的复杂, 开源社区为任何操作系统提供OpenGL支持,所以适用范围也是相当的广。很多游戏开发采用OpenGL作为渲染方式,这样可以方便的向Linux和OS X等平台移植。
而且另一个超级编程语言java也已经完成了和OpenGL的整合,意味着使用java 3D编写的3D程序等可以实现OpenGL整合。当然是用java 3D也可以调用Direct X来进行加速。
在非Windows平台下,目前仅能使用OpenGL进行加速,而在Windows平台下视频功能可以由DirectX或者OpenGL完成。由于开发商的选择不同,通常的硬件都是支持者两种加速方式的。客观的来说在超高端硬件上对OpenGL的支持更好。
在Windows平台下,常规硬件(非服务器级别的)下,Direct X对3D的渲染性能要比OpenGL略微好点,尤其是在Windows7/8上。但是在Linux平台下OpenGL的渲染要比在Windows下对OpenGL的渲染强。
总的来说,Windows下Direct X性能比较好,不过Open GL也不差。但是同样是OpenGL在Linux,OS X下比Windows下渲染效果要好。
异同点对 比
Direct x
opengl
概念是由微软公司创建的多媒体编程接口由开源社区(ARB->06Khronos Group)提供的免费开源的多媒体编程接口语言c,c++c,c++作用电子游戏开发。DirectX亦被用於開發許多虛擬三維圖形相關軟體渲染2D、3D矢量圖形CAD、虛擬實境、科學視覺化程式和電子遊戲開發。平台Microsoft Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX ONEwindows,linux,Linux,mac,android,ios,web游戏市场pc和xbox市场基本占有手机游戏硬件支持良好不太好 OpenGL ESOpenGL ES(OpenGL for Embedded Systems)是 OpenGL 三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,OpenGLES是从OpenGL裁剪定制而来的,去除了glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性。经过多年发展,现在主要有两个版本,OpenGL ES 1.x针对固定管线硬件的,OpenGLES2.x针对可编程管线硬件。目前从Android4.3以上版本开始支持ESIOS从IOS7以上版本开始支持ES 3.0
版本对比版本
特点
1x针对固定管线硬件(固定管道),通过它内建的功能来设置诸如灯光,顶点(图形的顶点数),颜色,相机等等的东西。2x针对可编程管线硬件(可编程管道),需要自己动手编写任何功能。与此同时,2.0相比于1.0更具灵活性,功能也更强大.可以自定义顶点和像素计算,可以让表现方式更加准确3xOpenGL ES3.0扩展了OpenGL ES2.0,支持许多新的渲染技术,优化和显示质量改进,包括 - 引入了许多和纹理相关的新功能,对着色语言进行了重大更新和支持着色器新功能的API特性,引入了多种与几何形状规范和图元渲染控制相关的新功能,引入了新的缓冲区对象,增添了许多与屏幕外渲染到帧缓冲区对象相关的新功能,OpenGL ES 3.0向后兼容OpenGL ES 2.0,但由于3.0 / 2.0不支持1.x支持的固定功能管线,3.0 / 2.0不能向后兼容1.x. 帧率以及刷新卡顿的概念概念
一帧就是一副静止的画面,连续的帧就形成动画,如电影等。我们通常所说的帧数就是在秒钟时间里传输的图片的帧数,通常用fpsFrames Per Second)表示。每一帧都是静止的图像,快速连续地显示帧便形成了运动的假象,还原了物体当时的状态。高帧率可以得到更流畅、更逼真的动画。每秒钟帧数(fps)愈多,所显示的动作就会愈流畅。一般来说,图像帧率设置为25fps30fps已经足够。
错误
手机等单子设备达到每秒60帧就不卡否则就会卡。这个说法是不太准确的。应当说在快速刷新的情况下能达到60帧左右的就不会感觉到很卡。静止状态下的化不需如此高的帧数.很多游戏都在30帧左右也不会卡一般来说,战略类(比如XCOM未知敌人,植物大战僵尸),速度不快的平台类(比如时空幻境),速度不快第三人称(比如寂静岭),文字冒险(
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?